示例#1
0
        private static async Task <StatefulContract> InternalSetupAsync(NetworkCredentials networkCredentials)
        {
            var fx = new StatefulContract();

            fx.Network    = networkCredentials;
            fx.FileParams = new CreateFileParams
            {
                Expiration   = DateTime.UtcNow.AddSeconds(7890000),
                Endorsements = new Endorsement[] { networkCredentials.PublicKey },
                Contents     = Encoding.UTF8.GetBytes(STATEFUL_CONTRACT_BYTECODE)
            };
            fx.Client     = networkCredentials.NewClient();
            fx.FileRecord = await fx.Client.CreateFileWithRecordAsync(fx.FileParams, ctx =>
            {
                ctx.Memo = "Stateful Contract Create: Uploading Contract File " + Generator.Code(10);
            });

            Assert.Equal(ResponseCode.Success, fx.FileRecord.Status);
            fx.ContractParams = new CreateContractParams
            {
                File          = fx.FileRecord.File,
                Administrator = networkCredentials.PublicKey,
                Gas           = await networkCredentials.TinybarsFromGas(200),
                RenewPeriod   = TimeSpan.FromSeconds(7890000),
                Arguments     = new object[]
                {
                    "Hello from .NET. " + DateTime.UtcNow.ToLongDateString()
                }
            };
            return(fx);
        }
示例#2
0
        public static async Task <StatefulContract> CreateAsync(NetworkCredentials networkCredentials, Action <StatefulContract> customize = null)
        {
            var fx = new StatefulContract();

            networkCredentials.Output?.WriteLine("STARTING SETUP: Creating Stateful Contract Instance");
            (fx.PublicKey, fx.PrivateKey) = Generator.KeyPair();
            fx.Network    = networkCredentials;
            fx.FileParams = new CreateFileParams
            {
                Expiration   = DateTime.UtcNow.AddSeconds(7890000),
                Endorsements = new Endorsement[] { networkCredentials.PublicKey },
                Contents     = Encoding.UTF8.GetBytes(STATEFUL_CONTRACT_BYTECODE)
            };
            fx.Client     = networkCredentials.NewClient();
            fx.FileRecord = await fx.Client.CreateFileWithRecordAsync(fx.FileParams, ctx =>
            {
                ctx.Memo = "Stateful Contract Create: Uploading Contract File " + Generator.Code(10);
            });

            Assert.Equal(ResponseCode.Success, fx.FileRecord.Status);
            fx.ContractParams = new CreateContractParams
            {
                File          = fx.FileRecord.File,
                Administrator = fx.PublicKey,
                Signatory     = fx.PrivateKey,
                Memo          = "Stateful Contract " + Generator.Code(10),
                Gas           = await networkCredentials.TinybarsFromGas(200),
                RenewPeriod   = TimeSpan.FromSeconds(7890000),
                Arguments     = new object[]
                {
                    "Hello from .NET. " + DateTime.UtcNow.ToLongDateString()
                }
            };
            customize?.Invoke(fx);
            fx.ContractRecord = await fx.Client.CreateContractWithRecordAsync(fx.ContractParams, ctx =>
            {
                ctx.Memo = "Stateful Contract Create: Instantiating Stateful Instance " + Generator.Code(10);
            });

            fx.Network.Output?.WriteLine("SETUP COMPLETED: Stateful Contract Instance Created");
            return(fx);
        }