本页面试图描述在ETH上发生的各种交易。
当创建合约时,需要把to
设为null/None/不设置(注意0x0000000000000000000000000000000000000000是一个合法的EOA,并非创建合约地址),此时,EVM会通过某种方式计算出新合约的地址,同时在该地址下将data直接作为code从开始执行,最后将返回的数据作为新合约的code写入区块链。
就如构造函数中所说的,合约创建时是可以接受value的,只需要constructor是payable的
一般来说,通过solidity编写的智能合约的在部署时的data可以分为4部分:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Exp {
constructor(address target) {}
}
raw data:
deploy: 6080604052348015600f57600080fd5b506040516101053803806101058339818101604052810190602f91906090565b5060b8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006062826039565b9050919050565b6070816059565b8114607a57600080fd5b50565b600081519050608a816069565b92915050565b60006020828403121560a35760a26034565b5b600060af84828501607d565b91505092915050565b603f806100c66000396000f3fe
contract: 6080604052600080fdfea2646970667358221220b1a981cf3f7372d983b667a16d435e63d6bf7c2a87ec35f0a70dc2897be2829064736f6c634300080d0033
constructor args: 000000000000000000000000612086b50997e36d332db56518f57a321992ad28