Moonbeam EVM (Polkadot EVM 互換のパラチェーン) で以下のトランザクションに署名したアドレスを取得しようとしています。コントラクト ABI をロードすることで、次のようにして呼び出しパラメーターを取得できます。
from web3 import Web3
w3 = Web3(Web3.HTTPProvider(endpoint))
contract = w3.eth.contract(address=contract_address, abi=abi)
func_obj, func_params = contract.decode_function_input(input)
ただし、v、r、s 値から署名アドレスを取得する方法が見つかりませんでした。署名アドレスは0xb01744745fbBebE6A0Da674F8f45fD1e14D5B488
あり、Subscan はそれをデコードできます (方法はわかりません) 。
これは外部の内容です:
{
"extrinsic_hash": "None",
"extrinsic_length": 358,
"call": {
"call_index": "0x3400",
"call_function": "transact",
"call_module": "Ethereum",
"call_args": [
{
"name": "transaction",
"type": "Transaction",
"value": {
"nonce": [
4,
0,
0,
0
],
"gas_price": [
100000000000,
0,
0,
0
],
"gas_limit": [
81203,
0,
0,
0
],
"action": {
"Call": "0x0000000000000000000000000000000000000800"
},
"value": [
0,
0,
0,
0
],
"input": "0x829f5ee30000000000000000000000006ac4b6725efd8a1cb397884769730094e854efd4000000000000000000000000000000000000000000000004fcc1a89027f00000000000000000000000000000000000000000000000000000000000000000018b0000000000000000000000000000000000000000000000000000000000000000",
"signature": {
"v": 2604,
"r": "0x5c13ca196ecb21a46827d2959282b67b807fc733feb314832a5597f2c5e06df4",
"s": "0x62646696b3afa36444924ca8813e237faec7de9f8d044c3cd2f589293dcf5f73"
}
}
}
],
"call_hash": "0x92b544513124ed16ead74de9784661d46e5d8b839a232050ccf3348fc73a0b8a"
}
}
では、上記のデータから住所を取得するにはどうすればよいでしょうか。その結果をもたらすものを見つけることなく、私は多くの方法で試しました.
PSこの特定のケースでは、呼び出しによってトリガーされたイベントの1つからそのアドレスを取得できることを認識していますが、代わりにそのメソッドを使用したくありませんトランザクションに署名したアドレスをデコードしたい