首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用HardhatEthers引入并测试知名NFT智能合约

Ethers[8]、Waffle[9] Chai[10] ,Hardhat 整个控制面板放在你面前,让以太坊项目从构思到 IDO[11]。...Hardhat 具有极强延展性,可三方插件一起使用,帮助我们调整项目以满足特定需求。...要为 Solidity 文件添加语法突出显示类型提示,Juan Blanco 称为“solidity”[13]制作了一个很棒 VSCode 扩展 - 我建议安装 它使开发 Solidity 更容易:...// bored-ape.test.ts await boredApeContract.flipSaleState(); 运行 npx hardhat test ......, 我们仍然失败 - 但出现了不同错误...当你编写自己 Solidity 合约时,可以遵循相同流程,当前端存储库结合使用时,你拥有完整开发套件强大功能,其中包含非常直观流程详尽文档。

1.1K30

如何利用OpenZeppelin编写可升级智能合约

尽管基于区块链软件从不变性中获得了可观收益,但仍需要一定程度可变性才能修复错误改进产品。 在这篇文章中,我们学习: 1.为什么我们需要升级智能合约?2.了解升级是如何进行?...继续操作时,请勿输入$字符,否则会出现一些奇怪错误。 我们将在本教程中使用本地区块链网络。最受欢迎本地区块链是Ganache。...运行以下命令,并在出现提示时为其提供名称版本号: $ npx openzeppelin init 初始化期间发生两件事。首先,创建一个.openzeppelin目录,其中包含项目相关信息。...我们TodoList实例已升级到最新版本代码,同时保持其状态以前相同地址。我们不需要创建和部署代理合同或代理链接到TodoList。所有这些都是在后台进行!...您可以通过了解代理[23]来了解有关此限制背后原因更多信息。 违反变量存储布局限制导致合同升级版本混淆存储值,并可能导致程序严重错误

3.6K61
您找到你想要的搜索结果了吗?
是的
没有找到

UniswapFORSAGE(佛萨奇)系统开发,小公排佛萨奇2.0源码开发搭建

基本运算加法电路半加器两个二进制数(AB)相加,最低位会产生两个结果,分别是(S)进位(C),能够实现一个二进制位加法运算电路即半加器,半加器可以这样设计门电路(根据A、B相加后运算结果):...S=A⊕BS=A⊕B,C=ABC=AB全加器A、B、C一同运算产生S进位C称之为全加器,全加器半加器统称加法器,全加器相互串联即构成了二进制数加法运算,常见8位、16位、32位、64位为CPU...寄存器位数,不要混淆为加法器个数(也总线位数有关)。...Compared with traditional contracts,smart contracts with the three characteristics of blockchain have...,smart contracts have economic and efficient advantages.

40040

深入Solidity数据存储位置 - 存储

这也帮助我们更好地理解其包中合约一部分。 OpenZeppelin 提供了一个Timers库,可以用来建立处理 Solidity 合约中定时器时间点。...: 调试存储指针错误 这个错误是有道理。...从汇编 Yul 访问存储 你可以通过指定一个存储槽存储偏移量,在内联汇编中读写合约存储。 我们之前看到,存储中一些变量不一定占据一个完整存储槽,但有时会被挤在一起。...:= sload(c) } } 上面的代码将不会被编译,并会出现以下错误 有一点也要提到是,在内联汇编中,你不能向存储变量.slot或.offset赋值: function doesNotCompile.../ [25] 解剖智能合约结构--功能、数据变量: https://ethereum.org/en/developers/docs/smart-contracts/anatomy/ [26] Duet

1.7K30

用Vyper实现智能合约 - 一种 Python 方法

而 Solidity Truffle 框架结合,简直就是开发智能合约杀手级组合。几乎以太坊区块链上所有的智能合约都是用 Solidity 编写。...Vyper 语法非常简单易懂;Vyper 原则之一是让开发人员几乎不可能编写引起错误程序。 为什么选择 Vyper?...安全: 用 Vyper 构建安全智能合约是可能且自然 语言和编译器简单: 语言和编译器实现力求简单 可审计: Vyper 代码最大限度地具有人类可读性。此外,编写错误代码非常困难。...- Hello.json - 然后前面编译时输出 abi 填入 abi 字段,字节码填入字节码字段。...我们学习了如何 Vyper 源代码编译为智能合约,并用 Truffle 将其部署到 Ganache 。我们还通过 Truffle 控制台该智能合约进行了交互。

92520

以太坊合约静态分析工具Slither简介使用

上篇学习了Mythril[1],一种动态以太坊智能合约安全分析工具。今天来看看以太坊官方推荐另一款静态智能合约分析工具Slither。 本篇文章不做工具对比评测,仅从原理使用角度阐述。...用户可以通过APISlither进行交互。...经过SlithIR转换,Slither合约代码转换为SlithIR[3],一种内部表示语言,目的是通过简单API实现高精度分析,支持污点跟踪,从而支持检测复杂模型。...在代码分析阶段,Slither运行一组预定义分析,包括合约中变量、函数依赖关系;变量读写函数权限控制。 经过Slither核心处理之后,就可以提供漏洞检测、代码优化检测代码理解输出等。...四、参考 Slither: A Static Analysis Framework For Smart Contracts[5] Slither: The Leading Static Analyzer

2.5K20

用Visual Studio CodeCLion进行EOS开发

对于EOS Dapp开发,它们非常有帮助: C/C++ - VS Code智能感知、调试代码浏览 CMake - Visual Studio CodeCMake语言支持 CMake Tools...目前,eosiolib, libc++musl默认存在这里用于编译。紧接着是externalslibraries。两个文件夹都包含用于使整个编译过程更容易库。...(musl) add_subdirectory(libc++) # Your contracts (add the name of the folder which contains you smart...一旦keybindings.json打开,我们创建快捷方式。对于我们命令,我们选择了cmd+e、cmd+rcmd+i,但是你可以选择其他。这是你必须添加json: ?...EOS区块链去中心化应用开发,内容涵盖EOS工具链、账户钱包、发行代币、智能合约开发部署、使用代码智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp开发。

2K20

使用Echidna测试智能合约库

为自己智能合约库指定并检查有用属性。 我们演示如何使用 crytic.io[6]来完成这些工作,它提供了 GitHub 集成额外安全检查。...除了使库产生不正确结果之外,此类漏洞可能会产生其他后果;如果攻击者可以强制库代码意外回退,那么就存在潜在拒绝服务攻击可能。...如果攻击者可以使库函数进入失控循环,他们可以拒绝服务昂贵 gas 消耗结合起来。...不要被这个吓到;库不同,测试工具作为正在进行中工作,在慢慢改进扩展,工作得很好。...如果我们修复 `hasDuplicate` 中错误[16],那么我们测试全部通过: - 测试通过 - crytic_hasDuplicate: fuzzing (2928/10000) 告诉我们

65520

用 Truffle 插件自动在Etherscan上验证合约代码

译文出自:登链翻译计划[1] 译 者:Tiny熊[2] 校 对: 无 原文地址:Automatically verify Truffle smart contracts on Etherscan[3]...它一大功能是验证智能合约源代码[5]。使用户可以在使用合约之前通过源码了解合约功能。从而增加用户对合约信任,也因此使开发者受益。...需要输入诸如编译器版本构造函数参数之类内容,并且需要提交展开后合约源代码(译者注:这里是指当合约引用了其他文件时,需要把引用展开),该合约源代码需要与部署代码完全匹配。...中奖号码是对当前区块号进行模运算结果。这个运算在测试中可以,但是要注意,在正式生产中可能会被滥用。 在本文中,我们专门对合约进行进一步拆分,以使合约分散到多个文件中。便于展示插件全部功能。...contracts on Etherscan: https://kalis.me/verify-truffle-smart-contracts-etherscan/ [4] Rosco Kalis:

1.9K20

从以太坊;MorphToken事件;看智能合约构造函数大小写编码错误漏洞

Morpheus Network(https://morpheus.network/)世界上一些大型航运、海关银行公司协商,通过利用区块链智能合约技术建立一个全面服务、全球性、自动化、开放供应链平台一个集成加密货币支付系统...随后,知道创宇404区块链安全研究团队开始漏洞应急,通过分析MorphToken合约代码交易历史,确定该漏洞是由于大小写编码问题,错误Owned合约构造函数Owned首字母小写,使之成为了一个普通函数...在后续研究中,我们发现早在2017年8月29日,Github(https://github.com/trailofbits/not-so-smart-contracts/blob/master/missing_constructor...在Owned合约中,由于错误编码,构造函数名称写错,owned函数成为了一个普通函数。...四、防护方案 1、0.4.22版本以后solidity编译器引入了constructors关键字,以替代低版本合约名作为构造函数名语法,从而避免程序员编码错误。强烈建议采用最新版本编译器 ?

57830

Arbitrum 桥中消息陷阱

使 L2 到 L1 消息成为可能基础设施必须是安全。 这就是我着手探索 Arbitrum 中 L2 到 L1 消息传递原因。我目标:确定桥操作对每个相关方来说有多安全。...消息视为旨在在 L1 中帐户上执行一段调用数据。calldata target 都可以是任何东西——桥足够聪明来处理任意消息。 那么如何创建这个交易呢?...arbBlockNum, uint256 ethBlockNum, uint256 timestamp, uint256 callvalue, bytes data ); 这些部分放在一起...执行你声明要执行东西 等待已经结束。消息已准备好在 L1 上执行。 现在,中继必须设计一个交易,消息包装在一个特殊包中。包括桥 L1 端接收、验证执行它所需额外数据。...我意识到 Arbitrum 中 L2-to-L1 消息具有三个特点。尽管它们有些交织在一起,但,让我试着把它们分开。 随着我进行,我会将它们 Optimism 桥进行比较。

59520

手把手教你用Echidna测试智能合约

不过,以太坊区块链上代码比任何单个合约都更重要:智能合约库代码。 除了使库产生不正确结果之外,此类漏洞可能会产生其他后果;如果攻击者可以强制库代码意外恢复,那么他们就有了潜在拒绝服务攻击机会。...如果攻击者可以使库函数进入失控循环,他们可以拒绝服务昂贵 gas 消耗结合起来。 下面介绍下 Echidna 使用。 准备 下载 docker,并且安装。...github.com/trailofbits/slither https://github.com/trailofbits/rattle https://github.com/trailofbits/not-so-smart-contracts...,会出现失败。...https://learnblockchain.cn/people/4859 [2] 智能合约: https://learnblockchain.cn/2018/01/04/understanding-smart-contracts

84320

【犀牛鸟·学问】CCF-腾讯犀牛鸟基金线上学术报告——区块链安全保障链上治理体系分析(201903)

项目组将定期邀请学界学者企业研发专家举行在线或线下学术研讨会,讨论专项研究课题,分享最新研究及实践成果。 基金期待大家在这个平台上自由地进行分享,理性地进行讨论,从而碰撞出更为闪耀学术火花。...通过丰富学术思想交流,基金期待更好地助力参与者在产学研合作过程中拓宽学术视野,提升实践能力,为科技自主研发探索创新储备能量。...分享主题简介 Ethereum Virtual Machine (EVM) is the run-time environment for smart contracts and its vulnerabilities...With lots of techniques being continuously developed for the validation of smart contracts, the testing...分享主题简介 首先介绍微众银行在金融科技区块链领域探索,介绍FISCO BCOS社区概况,以及区块链技术在金融业务应用概况。

46630

Web3.0对前端很友好?

我们先了解一下专业术语有哪些:Web3:它是以太坊区块链 Ethereum blockchain 和你智能合约 Smart Contracts 之间连接。...以太坊 Ethereum:一个去中心化开源区块链 blockchain,允许用户通过创建智能合约 creating smart contracts 网络进行交互。它原生加密货币是以太币。...智能合约 Smart Contracts :它们是存储在区块链上计算机程序 computer programs ,在满足预定条件时运行。智能合约是用 Solidity 语言编写。...web3 包含 eth 对象 - web3.eth(专门以太坊区块链交互) shh 对象 - web3.shh(用于 Whisper 交互)添加web3 web3 引入到你工程中,其实跟我们现有的引用方式基本一致...JavaScript API 库 它最初是 ethers.io 一起使用,现在已经扩展为更通用库。

1.1K20

构建去中心化智能合约编程货币

,你可能会收到看起来像错误警告,它可能没有影响!...多花一点时间,以确保所处目录在packages/buidler/contracts文件夹 。 我们智能合约中代码被编译为称为字节码ABI“工件”(artifacts)。...scaffold-eth中一堆美味钩子[20]比如userBalance()来追踪地址余额或useContractReader()使我们状态合约保持同步。...现在,我们部署它并回到前端: yarn run deploy 我们可以同时对前端合约智能合约进行小增量更改。这个紧密开发循环使我们能够快速迭代并测试新想法或机制。...如果你曾经感到困惑沮丧,请在 Twitter DM[34]上给我留言,我们看看能否一起解决!Github issues [35]也非常适合反馈!

1.4K30

101项智能合约安全检查清单

他写道,现代世界失败其实就是其中第二种错误,他通过一系列医学例子,告诉我们外科医生日常工作是如何变得如此复杂,以至于出现这样或那样错误几乎是不可避免:对于一个原本称职医生来说,错过一个步骤...(参见这里[51]这里[52]) fallback receive()。检查是否考虑了fallback/receive函数所有预防措施, 他们与与可见性、状态可变性以太坊转账有微妙关系。...在某些情况下,使用abi.encodePacked()多个可变长度参数一起使用可能会导致哈希碰撞。不要允许用户访问abi.encodePacked()中使用参数。...Yul 优化器错误MLOADSLOAD调用替换为先前已写入加载位置值。...它涉及最常见 Solidity EVM 相关方面。根据共同底层特征或影响,已将清单项目归纳在一起放在 Github 上,以便在社区参与讨论情况下对其进行修正、更新和改进。

1.6K10

2022十大智能合约开发工具

在使用Truffle时,我经常遇到奇怪错误;他们typescript支持很微妙,测试运行速度比Hardhat[76]慢得多。...Apeworx设置语法brownie相同,但在应用时有一些有趣改进。 我只用过Apeworx一点,它感觉非常像brownie,我喜欢增加插件。...可以WaffleHardhat一起使用,因为它们都是基于javascript,而且很多人都使用这种组合设置。 Saddle Saddle[87]是Compound[88]对Truffle重塑。...它在你javascript中创建了一些简单包装器,合约一起工作,它还内置了React支持!请看Dapp大学关于使用Drizzle视频[125]。...这个领域已经出现了一些工具,使我们智能合约更加安全。 不过我还没有使用过这部分所有工具。我所做少数审计已经使用了Trail of Bits套件MythX(以及手动滚动浏览每一行代码!)。

1.9K30

Contract,开发者 Kotlin 编译器之间契约

不够智能 Kotlin 编译器 Kotlin编译器向来是比较智能,比如做类型推断smart cast等。...是的,如果仅仅以例子中如此简单实现,大家都会觉得可以推断出来 但是 现实中实践代码往往会比上面的复杂,比如涉及到多个调用更加复杂方法体实现等等 纵使可以做到,编译器也需要花费资源时间来分析上下文...开发者关于方法额外信息提供给编译器,还是以News?....这种情况是可能且容易出现,因为Contract并没有校验机制处理。...当这种情况出现,就意味着我们向编译器提供了虚假辅助信息 一旦问题出现,对应结果结果就是导致应用运行时崩溃。

53210
领券