Python 从web3py发送原始事务:TypeError:<;lambda>;()缺少4个必需的位置参数:';散列'';r'';s';,和';v';

Python 从web3py发送原始事务:TypeError:<;lambda>;()缺少4个必需的位置参数:';散列'';r'';s';,和';v';,python,python-3.x,ethereum,web3py,Python,Python 3.x,Ethereum,Web3py,我正在尝试使用以下代码通过web3py发送原始事务: t = w3.eth.account.sign_transaction(test_contract.functions.edit("test").buildTransaction( { "nonce": w3.eth.get_transaction_count(w3.eth.default_account) } ), pkey) w3.eth.send_raw_trans

我正在尝试使用以下代码通过web3py发送原始事务:

t = w3.eth.account.sign_transaction(test_contract.functions.edit("test").buildTransaction(
    {
        "nonce": w3.eth.get_transaction_count(w3.eth.default_account)
    }
), pkey)
w3.eth.send_raw_transaction(t)
但是,在python的最后一行,我在控制台中遇到了以下错误:

Traceback (most recent call last):
  File "***/main.py", line 64, in <module>
    w3.eth.send_raw_transaction(t)
  File "***/venv/lib/python3.9/site-packages/web3/module.py", line 53, in caller
    (method_str, params), response_formatters = method.process_params(module, *args, **kwargs)  # noqa: E501
  File "***/venv/lib/python3.9/site-packages/web3/method.py", line 194, in process_params
    _apply_request_formatters(params, self.request_formatters(method)))
  File "***/venv/lib/python3.9/site-packages/eth_utils/functional.py", line 45, in inner
    return callback(fn(*args, **kwargs))
  File "***/venv/lib/python3.9/site-packages/web3/method.py", line 50, in _apply_request_formatters
    formatted_params = pipe(params, request_formatters)
  File "cytoolz/functoolz.pyx", line 667, in cytoolz.functoolz.pipe
  File "cytoolz/functoolz.pyx", line 642, in cytoolz.functoolz.c_pipe
  File "cytoolz/functoolz.pyx", line 254, in cytoolz.functoolz.curry.__call__
  File "cytoolz/functoolz.pyx", line 250, in cytoolz.functoolz.curry.__call__
  File "***/venv/lib/python3.9/site-packages/web3/_utils/abi.py", line 799, in map_abi_data
    return pipe(data, *pipeline)
  File "cytoolz/functoolz.pyx", line 667, in cytoolz.functoolz.pipe
  File "cytoolz/functoolz.pyx", line 642, in cytoolz.functoolz.c_pipe
  File "cytoolz/functoolz.pyx", line 254, in cytoolz.functoolz.curry.__call__
  File "cytoolz/functoolz.pyx", line 250, in cytoolz.functoolz.curry.__call__
  File "***/venv/lib/python3.9/site-packages/web3/_utils/abi.py", line 833, in data_tree_map
    return recursive_map(map_to_typed_data, data_tree)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/decorators.py", line 30, in wrapped
    wrapped_val = to_wrap(*args)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 89, in recursive_map
    items_mapped = map_collection(recurse, data)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 76, in map_collection
    return datatype(map(func, collection))
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 88, in recurse
    return recursive_map(func, item)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/decorators.py", line 30, in wrapped
    wrapped_val = to_wrap(*args)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 89, in recursive_map
    items_mapped = map_collection(recurse, data)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 76, in map_collection
    return datatype(map(func, collection))
  File "***/venv/lib/python3.9/site-packages/web3/_utils/abi.py", line 855, in __new__
    return super().__new__(cls, *iterable)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 88, in recurse
    return recursive_map(func, item)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/decorators.py", line 30, in wrapped
    wrapped_val = to_wrap(*args)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 89, in recursive_map
    items_mapped = map_collection(recurse, data)
  File "***/venv/lib/python3.9/site-packages/web3/_utils/formatters.py", line 76, in map_collection
    return datatype(map(func, collection))
TypeError: <lambda>() missing 4 required positional arguments: 'hash', 'r', 's', and 'v'
回溯(最近一次呼叫最后一次):
文件“***/main.py”,第64行,在
w3.eth.send\u原始事务(t)
文件“***/venv/lib/python3.9/site packages/web3/module.py”,第53行,调用者
(method_str,params),response_formatters=method.process_params(module,*args,**kwargs)#noqa:E501
文件“***/venv/lib/python3.9/site packages/web3/method.py”,第194行,进程中参数
_应用请求格式化程序(参数、self.request格式化程序(方法)))
文件“***/venv/lib/python3.9/site packages/eth_utils/functional.py”,第45行,内部
返回回调(fn(*args,**kwargs))
文件“***/venv/lib/python3.9/site-packages/web3/method.py”,第50行,在应用请求格式化程序中
格式化的\u参数=管道(参数、请求\u格式化程序)
文件“cytoolz/functoolz.pyx”,第667行,位于cytoolz.functoolz.pipe中
cytoolz.functoolz.c_管道中的文件“cytoolz/functoolz.pyx”,第642行
文件“cytoolz/functoolz.pyx”,第254行,在cytoolz.functoolz.curry.\uu调用__
文件“cytoolz/functoolz.pyx”,第250行,在cytoolz.functoolz.curry中__
文件“***/venv/lib/python3.9/site packages/web3/_-utils/abi.py”,第799行,在map_-abi_数据中
回流管(数据,*管道)
文件“cytoolz/functoolz.pyx”,第667行,位于cytoolz.functoolz.pipe中
cytoolz.functoolz.c_管道中的文件“cytoolz/functoolz.pyx”,第642行
文件“cytoolz/functoolz.pyx”,第254行,在cytoolz.functoolz.curry.\uu调用__
文件“cytoolz/functoolz.pyx”,第250行,在cytoolz.functoolz.curry中__
文件“***/venv/lib/python3.9/site packages/web3/_-utils/abi.py”,第833行,在数据树图中
返回递归映射(映射到类型化数据,数据树)
文件“***/venv/lib/python3.9/site packages/web3/_-utils/decorators.py”,第30行,包装
已包装的(val)=待包装(*args)
递归映射中的第89行文件“***/venv/lib/python3.9/site packages/web3/_utils/formatters.py”
项目映射=映射集合(递归,数据)
文件“***/venv/lib/python3.9/site packages/web3/_utils/formatters.py”,第76行,在地图集合中
返回数据类型(映射(函数,集合))
文件“***/venv/lib/python3.9/site packages/web3/_-utils/formatters.py”,第88行,递归格式
返回递归映射(func,item)
文件“***/venv/lib/python3.9/site packages/web3/_-utils/decorators.py”,第30行,包装
已包装的(val)=待包装(*args)
递归映射中的第89行文件“***/venv/lib/python3.9/site packages/web3/_utils/formatters.py”
项目映射=映射集合(递归,数据)
文件“***/venv/lib/python3.9/site packages/web3/_utils/formatters.py”,第76行,在地图集合中
返回数据类型(映射(函数,集合))
文件“***/venv/lib/python3.9/site packages/web3/_-utils/abi.py”,第855行,在新的__
返回super()
文件“***/venv/lib/python3.9/site packages/web3/_-utils/formatters.py”,第88行,递归格式
返回递归映射(func,item)
文件“***/venv/lib/python3.9/site packages/web3/_-utils/decorators.py”,第30行,包装
已包装的(val)=待包装(*args)
递归映射中的第89行文件“***/venv/lib/python3.9/site packages/web3/_utils/formatters.py”
项目映射=映射集合(递归,数据)
文件“***/venv/lib/python3.9/site packages/web3/_utils/formatters.py”,第76行,在地图集合中
返回数据类型(映射(函数,集合))
TypeError:()缺少4个必需的位置参数:“哈希”、“r”、“s”和“v”
我正在使用infura自定义节点,这就是为什么我不能通过contract.functions.method.transact()发送事务。我不知道该如何处理这个错误,花了很多时间阅读文档,却一无所获


如何解决此问题?

您需要先签署交易,然后再使用您有ETH余额的帐户发送

>>从web3导入web3,EthereumTesterProvider
>>>w3=Web3(以太坊测试仪提供商)
>>>从web3.0中间件导入构造\u签名\u和\u发送\u原始\u中间件
>>>从eth_账户导入账户
>>>acct=Account.create('KEYSMASH FJAFJKLDSKF7JKFDJ 1530')
>>>w3.middleware\u onion.add(构造\u签名\u和\u发送\u原始\u中间件(acct))
>>>w3.eth.default\u账户=账户地址
#现在,您可以从acct.address发送tx,而无需构建和签署每个原始事务