您可以在现有合约实例上使用 with_account()
方法,作为创建一个连接到提供的钱包的新实例的简写。这样可以让您以链式的方式使用不同的钱包进行合约调用。
// Create contract instance with wallet_1
let contract_instance = MyContract::new(contract_id, wallet_1.clone());
// Perform contract call with wallet_2
let response = contract_instance
.with_account(wallet_2) // Connect wallet_2
.methods() // Get contract methods
.get_msg_amount() // Our contract method
.call() // Perform the contract call.
.await?; // This is an async call, `.await` for it.
注意: 将不同的钱包连接到现有实例会忽略其设置的提供程序,而是使用用于部署合约的提供程序。如果有两个钱包连接到不同的提供程序(每个提供程序与一个独立的 fuel-core 通信),则分配给部署钱包的提供程序也将用于合约调用。这种行为仅在存在多个提供程序(即 fuel-core 实例)并且可以忽略其他情况下才相关。