Contract Basic
Developers can instantiate a new ContractBasic object to interface with any deployed contracts on-chain.
Constructor
Parameters:
- chain (IChain): The chain that the contract is deployed at.
 - contractAddress (string): The contract address corresponding to this contract.
 
Example:
StartCoroutine(portkeySDK.ChainProvider.GetChain("AELF", chain =>
{
    //creating a new token contract object to interface with the deployed smart contract on chain.
    var tokenContract = new ContractBasic(chain, tokenAddress);
    //to stuff...
}, OnError));
CallAsync<T>(string methodName, IMessage param, SuccessCallback<T> successCallback, ErrorCallback errorCallback)
Description: CallAsync is a generic method that can be used to call a view contract method (Read-only operation).
Parameters:
- methodName (string): Name of the method to call from the contract.
 - param (IMessage): Protobuf message parameters for calling the method from the contract.
 - successCallback (SuccessCallback<T>): The callback function when user is successful in calling the method on the contract.
 - errorCallback (ErrorCallback): The callback function when there is an error.
 
Generic:
- T: Protobuf IMessage inherited classes corresponding to the called contract method.
 
Example:
//create a contract object referencing a contract deployed on AELF chain
var tokenContract = new ContractBasic(chain, tokenAddress);
//creating a IMessage for parameters into the GetBalance method of the contract
var param = new GetBalanceInput()
{
    Owner = caAddress.ToAddress(), //contract address corresponding to the chain
    Symbol = "ELF"
};
//get balance on the contract
StartCoroutine(tokenContract.CallTransactionAsync<GetBalanceOutput\>("GetBalance", param, output =>
{
    var tokenBalance = output.Balance;
    // do stuff...
}, OnError););
SendAsync(ISigningKey signingKey, string methodName, IMessage param, SuccessCallback<TransactionInfoDto> successCallback, ErrorCallback errorCallback)
Description: SendAsync is a generic method that can be used to call a contract method that changes states and execute the transaction.
Parameters:
- signingKey (ISigningKey): EOA Wallet to sign the transaction with.
 - methodName (string): Name of the method to call from the contract.
 - param (IMessage): Protobuf message parameters for calling the method from the contract.
 - successCallback (SuccessCallback<T>): The callback function when user is successful in transaction for the method on the contract.
 - errorCallback (ErrorCallback): The callback function when there is an error.
 
Generic:
- T: Protobuf IMessage inherited classes corresponding to the called contract method.
 
Example:
var tokenContract = new ContractBasic(chain, tokenAddress);
//creating a IMessage for parameters into the Transfer method of the contract
var param = new TransferInput
{
    Symbol = "ELF",
    //...
};
StartCoroutine(contract.SendAsync(signingKey, "Transfer", param, result =>
{
    //check if we have successfully add manager info on the contract
    var successful = result.transactionResult.Status == TransactionResultStatus.Mined.ToString();
    //do stuff
}, errorCallback));
ContractAddress
Description: The address the contract is deployed at.
Example:
//create a contract object referencing a contract deployed on AELF chain
var tokenContract = new ContractBasic(chain, tokenAddress);
var contractAddress = tokenContract.ContractAddress; //this is equal to tokenAddress
ChainId
Description: For getting the corresponding chain Id to the contract.
Example:
//create a contract object referencing a contract deployed on AELF chain
var tokenContract = new ContractBasic(chain, tokenAddress);
var chainId = tokenContract.ChainId;