Closed (moved)
chainmaker/utils/evm_utils.py的小问题
chainmaker/utils/evm_utils.py文件中: input_values.append(int(value) if 'int' in key else value) 如果参数是uint256[]类型会报错。 int() 不能对数组进行
def calc_evm_method_params(method: str, params: list) -> tuple:
"""
转换EVM合约方法及参数
:param method: 合约方法
:param params: 参数列表 eg. [{"uint256": "10000"}, {"address": "0xa166c92f4c8118905ad984919dc683a7bdb295c1"}]
:return: 转换后的方法及参数
"""
input_types, input_values = [], []
for item in params:
for key, value in item.items():
input_types.append(key)
input_values.append(int(value) if 'int' in key else value)
sig = '%s(%s)' % (method, ','.join(input_types))
method_id = keccak_256_encrypt(sig)[:8]
data = method_id + encode_abi(tuple(input_types), tuple(input_values)).hex()
return method_id, dict(data=data)