
dapp
文章平均质量分 63
sanqima
这个作者很懒,什么都没留下…
展开
-
区块链的类型与网络ID
网络名称类型ID号RPCCurrency Symbol浏览器MainNeteth主网1https://mainnet.infura.io/v3/Infura_key (Infura节点或Alchemy)ETHhttps://cn.etherscan.com/Ropsteneth测试网3https://ropsten.infura.io/v3/Infura_key (Infura节点或Alchemy)ETHhttps://ropsten.etherscan...原创 2022-01-27 14:43:28 · 3389 阅读 · 0 评论 -
使用ethers.js执行读函数与写函数
ethers.js是一个简洁的以太坊操作库,使用它非常方便的执行读函数、写函数。下面介绍使用ethers.js执行CountOne.sol里的读写函数。原创 2021-11-19 16:35:27 · 5828 阅读 · 1 评论 -
ERC20标准函数简介与测试方法
ERC20是以太坊上的一种合约标准,它包含5个函数、2个事件。具体如下:- totalSupply() 代币的总量- balanceOf() 某个地址上的余额- transfer() 发送代币- allowance() 额度、配额、津贴- approve() 批准给某个地址一定数量的代币(授予额度、授予津贴)- transferFrom() 提取approve授予的代币(提取额度、提取津贴)- Transfer() 代币发送事件- Approval() 额度批准事件原创 2021-11-04 16:42:49 · 4913 阅读 · 0 评论 -
解决“export NODE_ENV=test”不是外部或内部命令
今天在mocha编程中,运行测试ts脚本,报"export NODE_ENV=test"不是外部命令、内部命令,如图(1)所示。问题原因,export是Linux上的命令,在windows不支持,需要将它改成SET \"NODE_ENV=test\"。即用set代替export。原创 2021-11-01 23:08:51 · 688 阅读 · 0 评论 -
ethers.js读写合约里的状态变量
在ethers.js里,对合约状态变量的访问有2种方式:只读方式和读写方式。当访问合约里的状态变量时,需要知道该合约的地址、abi、provider(或signer)。只读方式,只能读取状态变量;而读写方式,既可以读取状态变量,还可以修改状态变量。原创 2021-10-31 17:30:57 · 6704 阅读 · 0 评论 -
解决”recipient.call{value : amount}(““)“问题
今天,在编译Solidity智能合约时,报"ParserError: Expected ';' but got '{'"错误,如图(1)所示。 问题原因:.call()调用在不同的Solidity版本里,是不相同的。解决方法:根据Solidity版本,来更改.call()写法。原创 2021-10-25 16:21:31 · 1146 阅读 · 0 评论 -
监听Solidity合约事件
在ethers.js里,使用contractWithSigner.on()的方式,监听合约的某个事件或者地址上的交易。合约的事件,会通过emit event的方式发出,使用contractWithSigner.on() 注册了该事件,就可以实现监听了。下面以监听EventValue.sol里的ValueChanged事件为例,进行说明。原创 2021-10-24 12:50:41 · 5107 阅读 · 0 评论 -
使用ethers.js部署Solidity智能合约
ethers.js是一个非常精简的以太坊操作库,它包含如下四个模块:Ethers.provider,Ethers.contract,Ethers.utils,Ethers.wallets其中,Ethers.provider负责与以太坊节点进行连接,查询交易、广播交易,获取账户余额等功能;Ethers.contract负责与智能合约进行交互,包括部署合约、监听合约里的事件、获取合约里的信息,调用合约里的函数等功能;Ethers.utils是一个工具库,主要用于处理输入、输出数据,数据的进度与格式转换;原创 2021-10-24 10:57:53 · 4877 阅读 · 1 评论 -
Solidity状态变量的可见性
Solidity的状态变量,有private、public这2种,其中private表示私有,在本合约里可见;public表示公有,在本合约、以及它的子合约都可见。如果一个状态变量,既没有被private修饰、也没有被public修饰,则它默认私有的。原创 2021-10-23 18:25:39 · 1090 阅读 · 0 评论 -
以太坊外部账户EOA与合约账户CA的区别
在以太坊中,账户拥有4个字段:{nonce,balance,codeHash,StorageRoot}。分为2种账户:外部账户、合约账户。外部账户,Externally Owned Accounts,简称EOA,它拥有私钥,其codeHash为空; 合约账户,Contact Account,简称CA,它没有私钥,其codeHash非空。原创 2021-10-20 11:49:06 · 6802 阅读 · 2 评论 -
使用web3.py发送ETH和ERC20
2021年,web3.py的版本更新到了v5.4,其库函数名称改了很多,库函数名称由之前的驼峰命名xxxYYYzzz(错落有致,用大小写区别不同的名称),改成蛇形命名法: xxx_yyy_zzz(名称全部小写,名字之间用- 下划线连接)。使用web3.eth.send_transaction()来发送ETH, 使用web3.eth.wait_for_transaction_receipt()来发送ERC20。原创 2021-10-15 20:35:42 · 5814 阅读 · 6 评论 -
使用hardhat将合约部署到ganache
hardhat使用命令:npx hardhat run scripts/deploy.js --network XXXnet,既可以把合约部署到主网(mainnet)、测试网(ropsten、rinkey),还可以部署到本地网络(ganache,hardhat-test)。比如,npx hardhat run scripts/deploy.js --network ganache,就可以把合约部署到ganache,下面以onehat工程为例,将token.sol合约部署到ganache。原创 2021-10-12 00:07:50 · 3995 阅读 · 0 评论 -
vscode常用的深色主题
在vscode中有几种常用的深色主题,设置深色主题的原因是为了保护眼睛,同时给代码着色,更方便阅读和编写。点击vscode做出的插件按钮 --> 输入 theme 回车即可。原创 2021-10-02 16:14:35 · 5151 阅读 · 0 评论 -
将Solidity abi.json压缩成一行
智能合约编译成功后,会得到一个.bin、.json文件,在.json文件里就含有该合约的abi。下面介绍这个abi字段压缩成一行。用vscode打开xx.json,找到abi关键字,将光标放到括号 [的左边,然后按Shift+Ctrl+→ 快捷键选中abi的[]字段 ,然后复制到json在线解析网页,点击[压缩一行],再复制到res.json里即可,如图(1)、如图(2)所示。原创 2021-09-29 08:47:48 · 1325 阅读 · 0 评论 -
解决truffle “could not find suitable configuration file“问题
在使用truffle命令的过程中,有时会报"could not find suitable configuration file",出现这种现象的原因是,当前目录下缺少truffle.js 或者truffle-config.js。解决方法:使用truffle init命令,生成一个truffle.js或者truffle-config.js即可。或者,切换到含有truffle.js 或者truffle-config.js的目录,再使用truffle命令即可。原创 2021-09-25 22:13:15 · 2972 阅读 · 2 评论 -
openzeppelin与solidity版本对应关系
OpenZeppelin 是构建在 EVM 之上的开源智能合约开发工具,让开发者可以安全地开发和管理智能合约和 Dapp。OpenZeppelin 使用以太坊智能合约语言 Solidity 进行构建,并支持所有 EVM 和 eWASM 的跨平台移植。使用OpenZeppelin库,可以让智能合约更加安全、更加简洁。原创 2021-09-20 11:20:47 · 2115 阅读 · 0 评论 -
Solidity的上溢与下溢
Solidity是一种类似于JavaScript的语言,它面向对象,支持多继承,可以一次返回多个值。在开发智能合约的过程中,对应++、--这类的操作要考虑变量的定义域,即要考虑变量的上溢与下溢问题。原创 2021-09-25 10:55:51 · 739 阅读 · 0 评论