Esempio n. 1
0
        public async Task <bool> ChangeTrustVoteToken(string pubKey, string secretKey)
        {
            //Set network and server
            Network.UseTestNetwork();
            Server server = new Server("https://horizon-testnet.stellar.org");

            var nonNativeAsset = Asset.Create(null, this.VoteToken, IssueAccount.PublicKey);

            var source = KeyPair.FromSecretSeed(secretKey);

            var limit = "100";

            AccountResponse accountResponse = await server.Accounts.Account(source.AccountId);

            Account sourceAccount = new Account(source.AccountId, accountResponse.SequenceNumber);

            var sourceSponsor = KeyPair.FromSecretSeed(DistributionAccount.SecretSeed);

            var sponsored = KeyPair.FromAccountId(pubKey);

            var operationStartSponsor = new BeginSponsoringFutureReservesOperation.Builder(sponsored)
                                        .SetSourceAccount(sourceSponsor)
                                        .Build();

            var operation = new ChangeTrustOperation.Builder(nonNativeAsset, limit)
                            .SetSourceAccount(source)
                            .Build();

            var operationEndSponsoring = new EndSponsoringFutureReservesOperation.Builder()
                                         .SetSourceAccount(source)
                                         .Build();

            Transaction innerTransaction = new TransactionBuilder(sourceAccount)
                                           .SetFee(100)
                                           .AddOperation(operationStartSponsor)
                                           .AddOperation(operation)
                                           .AddOperation(operationEndSponsoring)
                                           .Build();

            //Sign Transaction
            innerTransaction.Sign(sourceSponsor);
            innerTransaction.Sign(source);

            var feeSource = sourceSponsor;
            var finalTx   = TransactionBuilder.BuildFeeBumpTransaction(feeSource, innerTransaction, 100);

            finalTx.Sign(feeSource);
            //Try to send the transaction
            try
            {
                var response = await this.SubmitTransaction(finalTx.ToEnvelopeXdrBase64());

                return(response.IsSuccess());
            }
            catch (Exception exception)
            {
                return(false);
            }
        }
Esempio n. 2
0
        public async Task <bool> ActivateUserAccount(string accountId, string secretSeed)
        {
            //Set network and server
            Network.UseTestNetwork();
            Server server = new Server("https://horizon-testnet.stellar.org");

            var sourceKeyPair = KeyPair.FromSecretSeed(DistributionAccount.SecretSeed);

            //Destination keypair from the account id
            KeyPair destinationKeyPair = KeyPair.FromAccountId(accountId);

            AccountResponse sourceAccountResponse = await server.Accounts.Account(DistributionAccount.PublicKey);

            //Create source account object
            Account sourceAccount = new Account(DistributionAccount.PublicKey, sourceAccountResponse.SequenceNumber);

            Asset asset = new AssetTypeNative();

            var operationStartSponsor = new BeginSponsoringFutureReservesOperation.Builder(destinationKeyPair)
                                        .SetSourceAccount(sourceKeyPair)
                                        .Build();

            //Create payment operation
            CreateAccountOperation operation = new CreateAccountOperation.Builder(destinationKeyPair, "0").SetSourceAccount(sourceAccount.KeyPair).Build();

            var sponsoredSource        = KeyPair.FromSecretSeed(secretSeed);
            var operationEndSponsoring = new EndSponsoringFutureReservesOperation.Builder()
                                         .SetSourceAccount(sponsoredSource)
                                         .Build();

            Transaction transaction = new TransactionBuilder(sourceAccount)
                                      .SetFee(100)
                                      .AddOperation(operationStartSponsor)
                                      .AddOperation(operation)
                                      .AddOperation(operationEndSponsoring)
                                      .Build();

            //Sign Transaction
            transaction.Sign(sourceKeyPair);
            transaction.Sign(sponsoredSource);

            try
            {
                var response = await server.SubmitTransaction(transaction);

                return(response.IsSuccess());
            }
            catch (Exception exception)
            {
                return(false);
            }
        }