⌘K

Calls With Different Wallets

Icon Link使用不同钱包进行调用

您可以在现有合约实例上使用 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.
Icon InfoCircle

注意: 将不同的钱包连接到现有实例会忽略其设置的提供程序,而是使用用于部署合约的提供程序。如果有两个钱包连接到不同的提供程序(每个提供程序与一个独立的 fuel-core 通信),则分配给部署钱包的提供程序也将用于合约调用。这种行为仅在存在多个提供程序(即 fuel-core 实例)并且可以忽略其他情况下才相关。