问题中提到的交易记录在BinanceTransactionHash(Txhash)Details|BscScan。首先查看交易记录,bscscan不能解析出来函数名,也就是abi没有公开。
需要确定函数调用签名,也就是0xb45112b2。在区块链中合约代码执行,需要指定某个合约地址的某个函数。这个执行的函数是使用Keccak-256(SHA-3)编码后的散列,取散列的前四个字节即具有带括号的参数类型列表的函数名称”。通俗的说就是:将函数名,带顺序的变量类型以及参数括号进行Keccak-256编码后,取前四个字节的二进制字符串,即以太坊的合约函数签名。
第一步是搜索网上的签名数据库,搜索结果如下:说明还没有上传函数的abi定义。若没有函数的abi信息,就没办法调用了吗?当然不是!只需要找到函数的定义,就相当于定义了一个函数指针,签名只是这个函数指针,函数的参数保证调用堆栈不出错,而函数签名是已经有的。
第二步是找到函数原型,找到合约,点击合约地址0x217这个。合约代码不公开,点击bytecode-decompiler,得到代码。搜索函数签名,得到函数原型。
第三步是构建函数名不一样,函数参数一样的函数。这个函数有返回值,只是为了方便演示效果:function greet3(uint256 num) public view returns (string memory) { return "greet3"; }。用你的合约生成调用接口,在使用的时候,address为合约地址。greeter=w3.eth.contract(address="0xB5816B1C17ce9386019ac42310dB523749F5f2c3",abi=jsobjs["abi"])。
最后是调用方法。搞定问题1,查看webpy的代码,显然这样的调用是不支持的。需要自己修改webpy的代码,支持签名替换。我开源的代码里面提供了,修改过的,contract.py替换即可使用。在github上有修改说明。代码里面有个例子,一个合约里面提供2个函数,函数签名:function greet2(uint256 num) public view returns (string memory) { return "greet2"; }和function greet3(uint256 num) public view returns (string memory) { return "greet3"; }。greet2函数签名为"0xf9220889",greet3函数签名为"0x02d355dc"。print(greeter.functions.greet3(456).call(sigfn="0xf9220889"))打印。
合约对冲能够在哪里做?小白能做合约对冲吗?哪一个交易中心可以做合约对冲?什么叫合约对冲?合约对冲可信吗?合约对冲可以做吗?数字货币的合约对冲可以做吗?怎样做合约对冲?合约对冲是坑人的吗?合约对冲能赚钱吗?做合约对冲有什么...
一.什么叫比特币期货比特币期货又被称为比特币合约,它与务必具体拥有虚拟货币才可开展的币币交易有较大不一样。比特币合约使你可以预测分析BTC的市场价格和对冲交易风险性。这类交易规则,代表着你购买的是价格趋势,在于财产自身。...
什么是币安(Binance)合同交易?本文将介绍币圈(Coin Circle)最受欢迎的投资商品-合约交易。本文将分析期货与合约交易的差异,然后介绍合约交易的特点U本位与货币本位的区别,最后以币安(Binance)合约交...
鉴于公司因2022年度经审计的期末净资产为负值、公司2020年至2022年连续三个会计年度经审计扣除非经常性损益前后净利润孰低者均为负值,且2022年度审计报告显示公司持续经营能力存在不确定性,公司相关主要银行账户被冻结...