接近协议自版本0.17.0:委托交易以来引入了一个非凡的功能。使用此功能,您可以从一个帐户创建并签署交易,并代表另一个帐户发送。本质上,您为第三方帐户的天然气付费。
本教程将指导您使用Python在近协议上创建和执行交易。
先决条件:
- 熟悉python
- 近协议帐户
- python在图书馆附近(
py_near
)
分步指南
委托交易分为三个步骤:
- 爱丽丝创建一个
delegate_action
,指定所有动作,公钥和收件人。 - 爱丽丝用她的私钥签名
delegate_action
并将其传递给鲍勃。 - 鲍勃从一个动作 -
delegate_action
签名并将其发送到区块链。从本质上讲,爱丽丝的交易已执行,但鲍勃为气体付款。
创建和签署委托交易
以下python函数创建并签名委托事务。按照以下步骤操作:
- 安装
py_near
python库。您可以通过PIP安装它:
pip install py_near
- 运行以下Python代码:
from py_near.account import Account
from py_near_primitives import TransferAction
import ed25519
async def create_and_sign_delegate():
account = Account(
"alice.near",
"ed25519::...",
"https://nrpc.herewallet.app",
)
action = await account.create_delegate_action(actions=[TransferAction(1)], receiver_id="bob.near")
sign = account.sign_delegate_transaction(action)
account_to_execute = Account(
"bob.near",
"ed25519:...",
"https://nrpc.herewallet.app",
)
result = account_to_execute.call_delegate_transaction(
delegate_action=action,
signature=sign,
)
return result
create_and_sign_delegate()
在此示例中,我们将1 ynear从alice.near
转移到bob.near
,然后从bob.near
balance付费。
注释:用您的实际帐户键在帐户对象中替换ED25519公共键和私钥。您还需要用要发送交易的实际近协议帐户ID替换
。create_delegate_action
方法中的receiver_ID值。
警告:并非所有RPC支持委托交易。您可以使用https://nrpc.herewallet.app进行测试。
执行委托交易
要执行委托事务,请使用上面的Python代码中的call_delegate_transaction
方法。此方法需要两个参数:
-
delegate_action:
您在上一步中创建的授权模型对象。 -
signature:
您在上一步中创建的代表事务的签名。
您可以从任何近协议帐户执行此交易。在上面的示例中,交易是从bob.near
帐户执行的。
就是这样!您已经成功地创建并执行了一项临近协议的代表交易,代表另一个用户涵盖了气体成本。