以太坊签名 Java 版 头部加Ethereum Signed Message
Java encode 结构体(动态、静态) 动态数组; decode(data)
使用 ethers.js 进行 abi.encode、encodePacked 和 signature
Verify Opensea Bulk Order Signature
白名单 空投
使用ethers.js
预获取 create
创建的合约地址
Get Contract Address Of Create
- 预先计算出智能合约的地址(solidity code)
// Get bytecode of contract to be deployed
function getBytecode()
public
view
returns (bytes memory)
{
bytes memory bytecode = type(SimpleWallet).creationCode;
// creationCode + parameter(constructor)
return abi.encodePacked(bytecode, abi.encode(msg.sender));
}
function getAddress(uint256 _salt)
public
view
returns (address)
{
// Get a hash concatenating args passed to encodePacked
bytes32 hash = keccak256(
abi.encodePacked(
bytes1(0xff), // 0
address(this), // address of factory contract
_salt, // a random salt
keccak256(getBytecode()) // the wallet contract bytecode
)
);
// Cast last 20 bytes of hash to address
return address(uint160(uint256(hash)));
}
-
使用
ethers.js
获取create2
创建的合约地址