public override Address DeploySystemSmartContract(SystemContractDeploymentInput input) { var name = input.Name; var category = input.Category; var code = input.Code.ToByteArray(); var transactionMethodCallList = input.TransactionMethodCallList; var address = PrivateDeploySystemSmartContract(name, category, code); foreach (var methodCall in transactionMethodCallList.Value) { Context.SendInline(address, methodCall.MethodName, methodCall.Params); } return(address); }
public override Address DeploySystemSmartContract(SystemContractDeploymentInput input) { RequireAuthority(State.GenesisOwner?.Value); var name = input.Name; var category = input.Category; var code = input.Code.ToByteArray(); var transactionMethodCallList = input.TransactionMethodCallList; var address = PrivateDeploySystemSmartContract(name, category, code, true); if (transactionMethodCallList != null) { foreach (var methodCall in transactionMethodCallList.Value) { Context.SendInline(address, methodCall.MethodName, methodCall.Params); } } return(address); }
public override Address DeploySystemSmartContract(SystemContractDeploymentInput input) { Assert(!State.Initialized.Value || !State.ContractDeploymentAuthorityRequired.Value, "System contract deployment failed."); RequireSenderAuthority(); var name = input.Name; var category = input.Category; var code = input.Code.ToByteArray(); var transactionMethodCallList = input.TransactionMethodCallList; // Context.Sender should be identical to Genesis contract address before initialization in production var address = DeploySmartContract(name, category, code, true, Context.Sender); if (transactionMethodCallList != null) { foreach (var methodCall in transactionMethodCallList.Value) { Context.SendInline(address, methodCall.MethodName, methodCall.Params); } } return(address); }