使用Soroban Python SDK调用通过交易调用授权来调用Auth合同
#python #soroban #sorobanathon #stellar

在我的previous post中,我向您展示了如何使用Soroban Python SDK部署和调用Auth合同。在这篇文章中,我们将使用Soroban Python SDK来调用具有事务调用授权的身份合同。我将使用已在上一篇文章中已部署的Auth合同,因此我不需要再次部署它。

准备

首先,创建一个Futurenet帐户,该帐户将用于部署验证合同并使用Soroban Python SDK调用合同。在Stellar Laboratory创建帐户,并确保为其提供资金。我将使用的帐户:

Public Key  GATQFKA7BV7LYYE6UJ2LRL56W3BZRRSWTINA6TG2EM5CCDORFIERAKWV
Secret Key  SCHKLGAGY7QGWUKUFDGHEQMSCPFZNMLEHQE6Y6WPGYGHQIM23T3NJE3C

我们要使用的文件:

koude0-使用交易调用授权调用验证合同的Python脚本。

调用合同

要调用验证合同,打开soroban_auth_with_transaction_invoke.py文件并调整以下参数:

contract_id = "af0aadafacc6bcb73b6ec9aeee03350ca0c6a3430e099d4b5dd371c6e07cc214"
tx_submitter_kp = Keypair.from_secret(
    "SCHKLGAGY7QGWUKUFDGHEQMSCPFZNMLEHQE6Y6WPGYGHQIM23T3NJE3C"
)

tx_submitter_kp:帐户的秘密密钥将用于提交交易并调用该功能。
contract_id:您要调用的授课合同的合同ID。 在部署合同之前收到的合同ID替换值。

使用更改保存soroban_auth_with_transaction_invoke.py文件。

在运行脚本之前,我想解释此特定代码:

func_name = "increment"
args = [Address(tx_submitter_kp.public_key), Uint32(10)]

invocation = AuthorizedInvocation(
    contract_id=contract_id,
    function_name=func_name,
    args=args,
    sub_invocations=[],
)

contract_auth = ContractAuth(
    address=None,
    nonce=None,
    root_invocation=invocation,
)

source = soroban_server.load_account(tx_submitter_kp.public_key)
tx = (
    TransactionBuilder(source, network_passphrase)
    .add_time_bounds(0, 0)
    .append_invoke_contract_function_op(
        contract_id=contract_id,
        function_name=func_name,
        parameters=args,
        auth=[contract_auth],
    )
    .build()
)

从上方的脚本中,我们要调用的合同功能是increment函数,它将地址和nonce设置为ContractAuth中的None这是用于交易调用授权,其中交易发送者为授权者。

现在我们将使用此命令运行脚本:

python soroban_auth_with_transaction_invoke.py

我们会得到结果:

transaction result: <SCVal [type=1, u32=<Uint32 [uint32=10]>]>

关闭

在这篇博客文章中,我们介绍了使用Soroban Python SDK部署和调用Auth合同的步骤。从脚本中,您将获得一个洞察力,如何在Soroban Python SDK中实现基本交易调用授权。