blockc0de
blockc0de

注册于 2021-10-02

江湖只有他的大名,没有他的介绍。

向TA求助
458学分数
378 贡献值
5个粉丝

最近动态

1天前 回答问题

直接往合约地址转账不就行了吗?

3天前 回答问题

单位转换一下

contract.balanceOf(address) / (10 ** contract.decimals())

3天前 回答问题

web3.eth.gas_price 返回当前gas价格 web3.eth.estimate_gas 估算并

4天前 回答问题

感觉是 encodeABI 有问题,你对比一下 web3js 发出的交易和 remix 上面发送的交易 data 字段格式是否一样,我记得 encodeABI 参数是不用调用 web3.utils.toHex 的。

2022-01-17 14:26 回答问题

执行合约时的问题,估计是合约代码里面有条件判断。

2022-01-15 22:57 回答问题

区块浏览器显示问题,可以去这里看完整的input。 image.png

2022-01-14 10:33 回答问题

可以参考本站的文章 利用Merkle树低成本实现可扩展支付池,代码实现可以参考Uniswap开源的merkle-distributor

2022-01-12 06:15 回答问题

报错信息很直白了啊,gas limit设置太低了,至少设置为21064,你设置段是21000

2022-01-11 10:41 回答问题

先判断 to 是不是合约地址,再根据to 地址判断是哪个合约,最后根据合约的ABI解析 input 数据获取具体的合约方法调用信息。

2022-01-10 15:24 回答问题

提问题最好把报错信息贴一下,我估计是因为 FunctionInputs 里面的成员是私有(小写)的原因。可以试试调用 Unpack(name string, data []byte) ([]interface{}, error) 函数进行解析。

2022-01-08 16:31 回答问题

调用了合约 a 的一个方法,并且发送的是合约 b 的代币。

发送合约 b 的代币这个行为是合约 a 方法里面实现的,不用你去操作。你只需要调用合约 a 的方法就行了,a 的方法里面会自动去发送 b 代币,前提是你是否提前调用 b 合约的 approve 方法进行授权?参数 value 的值必须为 0,这个参数表示发送 ETH 的数量。

2022-01-07 23:26 回答问题

好像跟web3的版本有关系,你试试 web3@1.2.9

2021-12-23 16:58 回答问题

忽略修饰器就行了

2021-12-20 19:06 回答问题

InterfaceContract(address(0xabcdefg)).invokeMethod{value: msg.value}();

2021-12-18 21:23 回答问题

错误提示已经非常直白了,web3.utils.toHex 传入参数只能是整数,balance/50000的计算结果是 33982013713.65282

2021-12-17 23:40 回答问题

合约方法使用 payable 修饰符,然后调用指定地址的 call 方法将 BNB 转移到指定账户。

function mint() external payable {
    (bool success, ) = toAddress.call{value: msg.value}("");
    require(success, "transfer-failed");
}

前端发送交易铸造 NFT 代币调用 eth_sendTransaction J

2021-12-16 21:43 回答问题

web3 内部就是调用的 JSON-RPC 接口啊

2021-12-14 20:19 回答问题

构造交易跟 transfer 两次有什么关系啊?合约方法里面逻辑都是写好了的不用管他 transfer 几次,只管调用它就行了。构造交易只需要生成 input data,得先弄清楚 input data 由哪些数据组成。

2021-12-14 12:12 回答问题

多少钱?

2021-12-12 14:36 回答问题

可以通过轮询区块来监听地址的交易,遍历每个区块内的交易列表判断被监控地址有没有发送或者收到交易,伪代码如下:


addresss = 被监控地址
lastScanNumber = 最后扫描区块高度

while true:
    number = eth_getBlockByNumber()
    while number > lastScanNumber:
        block = eth_getBlockByNumber(lastScanNumber+1)