首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

使用hardhat 开发以太坊智能合约-测试合约

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 上一章我们讲解了如何搭建基本的 hardhat 开发环境,这一章我们来讲一下如何测试、部署合约 特别提醒...,其中 第一个 owner 即为我们部署合约的账号,可以通过加入更多字段接受返回,获取其他的账号信息, otherAccount 这个定义 const [owner, otherAccount]...,从对象获取到合约对象以及合约部署方法里定义的解锁时间 expect(await lock.unlockTime()).to.equal(unlockTime); 使用 expect 进行断言,判断合约对象里面存储的解锁时间是否与合约部署方法里定义的解锁时间相等.../4930 [4] 使用hardhat开发以太坊智能合约-发布合约: https://learnblockchain.cn/article/4929 [5] 使用hardhat开发以太坊智能合约-验证合约

98720

使用hardhat 开发以太坊智能合约-发布合约

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 通过我们前面两节课程的学习,我们掌握了 hardhat 开发环境的基本搭建流程以及合约的测试方法,...下面我们来学习一下如何使用 hardhat 发布一个合约到区块链网络上 一、部署脚本 1、脚本文件说明 在工程项目 scripts ,我们可以找到一个名为 deploy.js,这个文件就是我们部署合约使用的脚本文件...: https://learnblockchain.cn/article/4885 [3] 使用hardhat开发以太坊智能合约-测试合约: https://learnblockchain.cn/article.../4930 [4] 使用hardhat开发以太坊智能合约-发布合约: https://learnblockchain.cn/article/4929 [5] 使用hardhat开发以太坊智能合约-验证合约

1.5K20

使用hardhat 开发以太坊智能合约-验证合约

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 一、概述 在我们将真正的合约部署到正式区块链网络上之后, 在区块链浏览器里查看我们的合约,它应该是这样显示的.../people/5344 [2] 使用hardhat开发以太坊智能合约-搭建环境: https://learnblockchain.cn/article/4885 [3] 使用hardhat开发以太坊智能合约...-测试合约: https://learnblockchain.cn/article/4930 [4] 使用hardhat开发以太坊智能合约-发布合约: https://learnblockchain.cn.../article/4929 [5] 使用hardhat开发以太坊智能合约-验证合约: https://learnblockchain.cn/article/4931 [6] PolygonScan Registration

99330

eos源码赏析(十九):EOS智能合约合约数据表RAM的使用

本文主要包含有以下内容 智能合约ram的使用 eoslambda表达式的使用 1、智能合约ram的使用 我们在以前的文章多次提到,通过多索引的模式将数据写入到数据表,其中有包括有增、删、改、查...在这里如果支付ram的人payer和ram的接受者也就是智能合约账户本身不是同一个人的话,需要获取用户的权限,而在本次的修改,修改的标题为: subjectively fail transaction...也就是在没有通知用户(action的发起者)之前,智能合约账户是无法通过获取用户的权限从而让用户为此次交易支付ram。...为什么要这样做呢,和以前狼人游戏的权限问题一样,试想如果一个合约开发者获取到用户账户中有多少ram,而后恶意更新合约代码,大量使用用户的ram来创建表或者往表添加内容,这将是个可怕的现象。...本文简单的介绍了在智能合约开发过程由谁来支付RAM的问题,以及在1.2.3版本更新之前和更新之后的对比。

65920

使用Echidna测试智能合约

为自己的智能合约库指定并检查有用的属性。 我们将演示如何使用 crytic.io[6]来完成这些工作,它提供了 GitHub 集成和额外的安全检查。...库可能带来风险 发现智能合约的漏洞非常重要:合约可以管理重要的经济资源(以代币或者以太币的形式),也可能因为一个漏洞损失上百万美元。...不过,以太坊区块链上有比其他合约更重要的代码 —— 智能合约库代码。 库可能被许多热门的合约引用,因此,假如SafeMath中有一个微妙的未知错误,许多关键合约可能被攻击者利用。...智能合约在“代码就是法律”的金融世界运行,如果库在某些情况下计算出不正确的结果,那么“代码漏洞”可能会传播到调用的合约,并允许攻击者做一些坏事。...即使我们试图覆盖所有源代码,涉及缺少源代码的错误, hasDuplicate 错误,也很容易被遗漏。 我们想使用基于属性的测试来指定所有可能输入的一般行为,然后生成大量输入。

65820

智能合约的那些后门漏洞

作者:Al1ex@知道创宇404区块链安全研究团队 时间:2020年8月20日 前言 智能合约的概念可以追溯到1994年,由Nick Szabo提出,但直到2008年才出现采用智能合约所需的区块链技术...,而最终于2013年,作为以太坊智能合约系统的一部分,智能合约首次出现。...智能合约包含了有关交易的所有信息,只有在满足要求后才会执行结果操作,智能合约和传统纸质合约的区别在于智能合约是由计算机生成的,因此,代码本身解释了参与方的相关义务,与此同时,用户可以根据规则开发自己想要的智能合约...之后再Etherscan可以查看到该地址对应的为一个地址账户,故而该地址账户可以操控原合约的任意地址用户的代币: ?...在transfer函数判断转账地址是否为空、进行转账防溢出检查、进行转账操作,通过以上逻辑可以发现由于sweep的地址参数 _ from、_to可控,而且该函数只能被合约的owner调用,所以合约

1.2K11

Solidity 智能合约开发 - Hardhat 框架使用

前言 经过了前几篇对智能合约基础、Web3.py、ethers.js 的学习,我们已经掌握了通过程序与区块链网络直接交互的基础知识,不熟悉的同学可以回顾一下: Solidity 智能合约开发 - 基础...Solidity 智能合约开发 - 玩转 Web3.py Solidity 智能合约开发 - 玩转 ethers.js 但是在真正的复杂业务场景,我们往往会使用一些进一步封装的框架, HardHat...Hardhat 介绍 Hardhat 是一个基于 JavaScript 的智能合约开发环境,可以用于灵活地编译、部署、测试和调试基于 EVM 的智能合约,并且提供了一系列工具链来整合代码与外部工具,还提供了丰富的插件生态...我们在开发过程,会牵扯到很多隐私信息,私钥等,我们会希望将其存储在 .env 文件或直接设置在终端,比如我们的 RINKEBY_PRIVATE_TOKEN,这样我们就可以在部署脚本中使用 process.env.RINKEBY_PRIVATE_TOKEN...合约测试 对于智能合约来说,其大多数操作都需要部署上链,与资产交互,消耗 gas,且一旦有安全隐患会造成严重的后果。因此,我们需要对智能合约进行详细的测试。

1.4K20

solidity智能合约tx.origin的正确使用场景

智能合约使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击。 但针对tx.origin的使用并不用谈虎色变,正确的使用还是有它的应用场景的。...漏洞详解 漏洞合约 在如下合约使用到了tx.origin的判断。 pragma solidity ^0.4.11; // 不要使用这个合约,其中包含一个 bug。...因为tx.origin是最初发起交易的地址,也就是合约拥有者的地址。然后,地址里面的ether便被转到攻击者地址使用提醒 tx.origin不应该用于智能合约的授权。...但它也有自己使用的场景,比如想要拒绝外部合约调用当前合约则可使用require(tx.origin ==msg.sender)来进行实现。...原文链接:https://www.choupangxia.com/2019/07/18/solidity智能合约tx-origin的正确使用场景/

1.3K20

DeFi的关键:智能合约是什么

一.什么是智能合约 智能合约(Smart Contract)是上世纪90年代由密码学家尼克·萨博提出的理念,由于当时缺乏可信的执行环境,智能合约没有被应用和发展,直到以太坊的出现,才让智能合约得以“复活...但如果赌约写在智能合约上,在达成赌约之时,各自把100元打入智能合约地址,智能合约根据最终的结果,自动执行,赢的一方拿走所有的奖励。可见,智能合约就无需第三方仲裁。 三.智能合约真的智能吗?...上面讲的都是智能合约的优点,那智能合约真的是智能且没有缺点的吗?其实不然,智能合约也有它的缺点。 如上文所述,智能合约不可篡改的属性,很容易建立起信任。...从上面两点看,智能合约既不完美也不智能。 四.小结 综上所述,关于智能合约,我们知道: 智能合约是用计算机语言取代了法律语言记录条款、由程序自动执行的合约。...与传统的合约相比,智能合约有去信任、安全、高效、无需第三方仲裁的优点。但智能合约并不完美,而且也不智能或者说它的智能程度很低。

85320

使用Uniswap V2部署自己的去中心化交易所

Dapp链接:https://www.chainpip.com/dapp-view/6724部署UniswapV2前需要准备的智能合约项目:uniswap-v2-core: 核心合约uniswap-v2...,比UniswapV2Pair.sol, USDT-WETH 这一个币对,就对应一个UniswapV2Pair.sol合约地址**,DAI-WETH 又对应另一个UniswapV2Pair.sol*...当用户在Uniswap v2添加两个交易对( USDT-WETH),也就是添加流动性, Uniswap会增加对应UniswapV2ERC20.sol实例(USDT-WETH LP Token)的余额...开始部署Uniswap V2在部署Uniswap V2之前,我们需要改下Uniswap V2代码init code hash值,否则即便部署成功,也使用不了。...:也是用 ERC20 兑换 ERC20,与上一个函数不同,指定的是兑换回的数量swapExactETHForTokens:指定 ETH 数量兑换 ERC20swapTokensForExactETH:用

1.2K20

使用truffle向infura部署以太坊智能合约

如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战入门教程 以太坊去中心化电商应用开发实战 Infura是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约部署到...本教程将向你展示如何使用Infura将现有的dapp迁移到Infura支持的以太坊网络。 在这个特定的例子,我们将迁移到Ropsten测试网络。...默认情况下,由助记符产生的第一个账户将负责执行合约迁移任务。 但如果需要的话,你可以传入参数以指定要使用的帐户。...STEP 3:如果想验证合约是否已成功部署,可以在Etherscan的Ropsten部分进行检查。 在搜索字段,输入部署交易ID。...你已经使用Infura和truffle的组合将合约部署到Ropsten上了!

1.7K40

搭建智能合约开发环境Remix IDE及使用

目前开发智能合约的IDE, 首推还是Remix, 而Remix官网, 总是由于各种各样的(网络)原因无法使用,本文就来介绍一下如何在本地搭建智能合约开发环境remix-ide并介绍Remix的使用。...写在前面 Remix 是以太坊智能合约编程语言Solidity IDE,阅读本文前,你应该对以太坊、智能合约有所了解, 如果还不了解,建议先看以太坊是什么。...在Compile页,会动态的显示当前编辑区域合约的编译信息,显示错误和警告。编译的直接码信息及ABI接口可以通过点击Details查看到。 在这篇文章里 也有截图说明。...Remix ide 加载本地磁盘文件 这是一个非常用的功能,但发现使用的人非常少,通过加载本地磁盘文件,就可以方便代码管理工具( git)管理我们的合约代码。 我详细介绍下如何这个功能怎么使用?...调试 在合约编写过程合约调试是必不可少的一部分,为了模拟调试的过程,我故意在代码中加入一ge错误的逻辑代码如下: pragma solidity ^0.4.0; contract SimpleStorage

3.2K10

使用Remix编译和部署以太坊智能合约

Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。...Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约。 本文希望将一个很简单的代币合约(只能发行和转账),部署在本地和测试网络上,测试下它的功能。...详细描述使用 Remix 的步骤及使用上可能碰到的问题。 之前开发过以太坊Ethereum智能合约,但没有记录过开发的过程和碰到的问题,觉得挺可惜。这次重新开始,从最基础开始,一步步学习。...输入一个数目点create,就可以发送交易部署合约。 ? 合约部署成功后,可以看到合约使用界面。Remix 会自动根据合约的內容,产生对应的合约使用界面。...稍等片刻(需要等交易被确认),部署成功后合约使用界面就会出来。 ? ok,现在可以用同样的方式使用合约啦!

1.5K10

手把手教你使用Michelso编写智能合约

它是一种基于堆栈的严格类型化语言,编写智能合约可以确保Tezos区块链的安全。Michelson可以和以太坊智能合约的字节码相媲美,但它更具可读性,更安全,更强大。...在这第一篇文章,我们将尝试使用Michelson语言,理解“基于堆栈”的含义,并编写一些非常简单的智能合约。...Michelson智能合约结构 Michelson智能合约展现了一个由三部分组成的简单结构: 预期参数的类型。 存储的类型。 Michelson代码。  ...转换成代码表示如下: parameter parameter-type ; storage storage-type ; code {   ... } 除此结构外,在Michelson编写智能合约时,...当堆栈只剩下此类对时,执行就会停止。 一个简单的Michelso智能合约 现在我们已经了解了PUSH以及Michelson智能合约的结构,让我们来写一个。

31130

使用hardhat开发以太坊智能合约-搭建环境

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 在我们实际开发智能合约的时候,以往的开发一般都是使用 remix 在线编译器,它的好处是即开即用,...一样,可以进行修改,修改方法详见官网 4)hardhat.config.js 该文件用于项目的配置使用区块链网络配置、合约编译版本配置等等,后续在讲解合约发布的时候会具体讲解里面的区块链网络配置...[3] 使用hardhat开发以太坊智能合约-测试合约: https://learnblockchain.cn/article/4930 [4] 使用hardhat开发以太坊智能合约-发布合约: https...://learnblockchain.cn/article/4929 [5] 使用hardhat开发以太坊智能合约-验证合约: https://learnblockchain.cn/article/4931

83020
领券