在我的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中实现基本交易调用授权。