一个包含Infura使用、账户的创建、测试币的领取、合约的部署、合约的调用的完整教程
hardhat示例工程,Lock.sol代码解析。
代币门控的概念用于限制访问,并为特定代币或一组代币的持有者提供独家内容、权利或成员资格。智能合约应该通过自动和手动来进行测试。使用HardHat或Truffle可以编写一组测试,以确保合约及其功能会按预期工作,最重要的是确保合约的安全性很高。
让EVM再次伟大,用智能合约保证MEME的安全
tx.origin攻击实现,一次调用,转干合约
第7节:世界杯竞猜(链下签名)
require,revert,和assert的使用场景分别是什么样的?●require()用法:1.验证用户输入,例如:require(input<20);2.验证外部合约的调用,例如:require(external.send(amount));3.在执行之前验证状态条件,例如:re
library在使用上有什么限制库与合约类似,但主要用于重用代码。库包含其他合约可以调用的函数。我们把可以反复利用的代码独立出来,成为一个库。Solidity对库的使用有一定的限制。以下是Solidity库的主要特征。1.库不能定义状态变量;2.库不能发送接收以太币;3.库不可以
存储树中的智能合约数据表示合约的持久状态,可以通过更新全局状态的交易进行更改。在一个Solidity的智能合约中,动态变量被存在持久化的存储中。内存中初始化的任何变量都是临时的,将在执行下一次外部函数调用之前被删除。此外,无法修改的常量变量不使用存储空间,因此,使用更少的gas。
重入攻击(ReentrancyAttack)是一种常见的智能合约安全漏洞,指黑客利用合约中存在的逻辑漏洞,在调用合约函数时,利用合约逻辑漏洞,反复调用合约的函数,并利用这种递归调用的机制,以欺骗合约的计算,从而使攻击者获得非法利益。重入攻击的本质是合约内部调用的函数未能恰当地处理合约状态的
整型溢出是智能合约中常见的漏洞之一。以太坊虚拟机对整数使用固定大小的数据类型,一个整数变量仅能表示一个固定范围的数值,比如uint8类型只能保存[0,255]。当把超过某个数据类型范围的数值保存到这个变量时,就会产生溢出。例如将一个uint8类型,值为0的变量进行减1操作时,计算结果会等
fallback函数充当了合约的默认处理函数,用于处理没有明确定义处理方式的消息。fallback函数会在三种情况下被调用1.调用者尝试调用一个合约中不存在的函数时2.用户给合约发Ether但是receive函数不存在3.用户发Ether,receive存在,但是同时用户还发
在Solidity中的继承和Solidity中的多线继承这两篇文章中,我们已经学习了Solidity关于继承的相关知识点,这篇文章,我们再聊一个更细致的话题:如何运行父级函数的构造函数。
什么是Merkle树定义MerkleTree,也叫默克尔树或哈希树,是区块链的底层加密技术,被比特币和以太坊区块链广泛采用。MerkleTree是一种自下而上构建的加密树,每个叶子是对应数据的哈希,而每个非叶子为它的2个子节点的哈希。如何生成Merkle树的数据在solidity中我
1.什么是合约的部署?2.什么是调用合约?3.如何理解转账