EVM的深入研究和分析

最终目标是能够完整地理解已编译的Solidity合同
1、执行
evm-tools 安装
https://github.com/CoinCulture/evm-tools/blob/master/INSTALL.md
/home/xue/go/bin/evm --debug --code 366020036101000a600035045b6001900380600c57 --input 05

不同字节码编译成不同EVM指令
1、基本:disam显示指定地址后面的汇编代码
echo 60056004016000526001601ff3  | disasm
evm --debug --code 60056004016000526001601ff3
2、输入
echo 60003560203501 | disasm
evm --debug --code 60003560203501 --input 00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000004

2、合约

字节码在evm部署后编译为EVM指令集
$ echo 6005600401 | evm-deploy | disasm 
600580600b6000396000f36005600401
0      PUSH1  => 05
$ evm --debug --code 600580600b6000396000f36005600401

3、安全性

同一个合约每次在evm部署后生成的 合约地址不同
1、生成合约地址
// Contract Address: 1F2A98889594024BFFDA3311CBE69728D392C06D
$ evm --code $(echo "60056004016000526001601ff3" | evm-deploy)  --datadir evm-data
// Contract Address: 14F6D12ECEBB7606C528880AD8B97C25AB7D4AD9
$ evm --code $(echo "60056004016000526001601ff3" | evm-deploy)  --datadir evm-data
2、向合约发送交易
$ evm --to 14F6D12ECEBB7606C528880AD8B97C25AB7D4AD9 --datadir evm-data
Datadir already exists
Loading database
Loading root hash 60209E93FEFD3DD5CF1D6B3FBDC33DA1B020C5B880A51E8306A3F5FDF269122A
Loaded account for receiver 14F6D12ECEBB7606C528880AD8B97C25AB7D4AD9
COD
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值