Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }