Reputation: 46
How should I pass the following arguments to sendOFT
function in
This smart smart contract using python web3.py and block explorer?
Here are the data types:
I get an error when I pass elements like this. Here is a sample transaction and this is it's decoded input data:
I would appreciate a complete input sample for both python web3.py(web3.js would be good as well) and Block Explorer.
Upvotes: 2
Views: 1064
Reputation: 83706
In web3.py, you can pass a Solidity struct
as
For example:
contract TupleContract {
struct T { int x; bool[2] y; address[] z; }
struct S { uint a; uint[] b; T[] c; }
function method(S memory s) public pure returns (S memory) {
return s;
}
}
If you pass struct as a tuple, arguments must be in the same order as they are in Solidity source code.
You would encode this for a smart contract call as following
my_struct_t = (1, [False, False], ["0x0000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000"])
my_struct_s = (1, [1, 1], [my_struct_t, my_struct_t])
tuple_contract.functions.method(my_struct_s).transact({...})
See Web3.py documentation for more information.
As block explorers tend to be proprietary software, you need to contact the support desk of any block explorer to learn how to use their software, and this job should not be outsourced to the public community.
Upvotes: 1