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); } }
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); } }