开源代码:gongbell/ContractFuzzer: The Ethereum Smart Contract Fuzzer for Security Vulnerability Detection (ASE 2018)
首先第一步:到Contractfuzzer的仓库中拉取项目源码
第二步:将下载的源码中的 go-Ethereum-cf 和 Ethereum 拉到虚拟机上,我使用的是Ubuntu18.04
第三步:使用go-Ethereum-cf 中的geth在Ethereum重新启动链
./../go-ethereum/build/bin/geth --fast --identity "TestNode2" --rpc -rpcaddr "0.0.0.0" -- rpcport "8545" --rpccorsdomain "*" --port "30303" --nodiscover --rpcapi "db,eth,net,web3,miner,net,personal,net,txpool,admin" --networkid 1900 --datadir /home/zheng/桌面/Ethereum --nat "any" --targetgaslimit "9000000000000" --unlock 0 -- password "pwd.txt" --mine console 2>>geth.log
其中的 "./../go-ethereum/build/bin/geth" 和 "/home/zheng/桌面/Ethereum" 都是自己虚拟机上的路径,需要改成自己的路径才能生效。
第四步:我们可以查看一下现在私链上面存在哪些账户,可以将自己的账户引入也可以继续使用链上的账户,可以先查看一下现在链上的账户
第五步:引入自己的账户进行交易,可以在钱包metamask上面导出自己的钱包私钥,然后根据私钥导入账户,具体可参照导出私钥,引入Ubuntu中
geth account import ~/pk.txt
pk.txt是钱包的私钥
第六步:私链一开始的矿工是"0x2b71cc952c8e3dfe97a696cf5c5b29f8a07de3d8",我们需要将矿工设置为自己的钱包地址
当设置成功的时候会返回true,personal.listAccounts[6]就是前面根据私钥引入的钱包地址
第七步:开启挖矿
虽然开启挖矿之后返回的是null,但是已经在开始出块了
第八步:解锁账户,然后就可以发出交易了
输入密码之后就可以解锁账户了
第九步:发起交易
web3.eth.sendTransaction({from: web3.eth.accounts[6],to: web3.eth.accounts[1],
value: web3.toWei(1, 'ether'),})
查看交易
eth.getTransaction(“0xdfa3998b46d2fa88b38f62e4a38c197d02bc5075fd465cb8dd46f982127dc5d9”)
可以看到发起交易成功,并且根据交易返回的区块哈希成功找到了交易
到此,我们就可以使用web3 在 Contractfuzzer 的私链上发送交易
注:我们现在只能使用web3发出交易,还不能直接在metamask发起交易,如果想要在metamask上发出交易,需要在启动链的命令中加入 --allow-insecure-unlock