public static void Encode(XdrDataOutputStream stream, AllowTrustOp encodedAllowTrustOp) { AccountID.Encode(stream, encodedAllowTrustOp.Trustor); AllowTrustOpAsset.Encode(stream, encodedAllowTrustOp.Asset); stream.WriteInt(encodedAllowTrustOp.Authorize ? 1 : 0); }
public static void Encode(XdrDataOutputStream stream, NodeID encodedNodeID) { PublicKey.Encode(stream, encodedNodeID.InnerValue); }
public static void Encode(XdrDataOutputStream stream, TransactionResultPair encodedTransactionResultPair) { Hash.Encode(stream, encodedTransactionResultPair.TransactionHash); TransactionResult.Encode(stream, encodedTransactionResultPair.Result); }
public static void Encode(XdrDataOutputStream stream, SetOptionsOp encodedSetOptionsOp) { if (encodedSetOptionsOp.InflationDest != null) { stream.WriteInt(1); AccountID.Encode(stream, encodedSetOptionsOp.InflationDest); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.ClearFlags != null) { stream.WriteInt(1); Uint32.Encode(stream, encodedSetOptionsOp.ClearFlags); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.SetFlags != null) { stream.WriteInt(1); Uint32.Encode(stream, encodedSetOptionsOp.SetFlags); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.MasterWeight != null) { stream.WriteInt(1); Uint32.Encode(stream, encodedSetOptionsOp.MasterWeight); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.LowThreshold != null) { stream.WriteInt(1); Uint32.Encode(stream, encodedSetOptionsOp.LowThreshold); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.MedThreshold != null) { stream.WriteInt(1); Uint32.Encode(stream, encodedSetOptionsOp.MedThreshold); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.HighThreshold != null) { stream.WriteInt(1); Uint32.Encode(stream, encodedSetOptionsOp.HighThreshold); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.HomeDomain != null) { stream.WriteInt(1); String32.Encode(stream, encodedSetOptionsOp.HomeDomain); } else { stream.WriteInt(0); } if (encodedSetOptionsOp.Signer != null) { stream.WriteInt(1); Signer.Encode(stream, encodedSetOptionsOp.Signer); } else { stream.WriteInt(0); } }
public static void Encode(XdrDataOutputStream stream, Price encodedPrice) { Int32.Encode(stream, encodedPrice.N); Int32.Encode(stream, encodedPrice.D); }
public static void Encode(XdrDataOutputStream stream, Curve25519Secret encodedCurve25519Secret) { int keysize = encodedCurve25519Secret.Key.Length; stream.Write(encodedCurve25519Secret.Key, 0, keysize); }
public static void Encode(XdrDataOutputStream stream, Auth encodedAuth) { stream.WriteInt(encodedAuth.Unused); }
public static void Encode(XdrDataOutputStream stream, String32 encodedString32) { stream.WriteString(encodedString32.InnerValue); }
public static void Encode(XdrDataOutputStream stream, InflationPayout encodedInflationPayout) { AccountID.Encode(stream, encodedInflationPayout.Destination); Int64.Encode(stream, encodedInflationPayout.Amount); }
public static void Encode(XdrDataOutputStream stream, AuthenticatedMessageV0 encodedAuthenticatedMessageV0) { Uint64.Encode(stream, encodedAuthenticatedMessageV0.Sequence); StellarMessage.Encode(stream, encodedAuthenticatedMessageV0.Message); HmacSha256Mac.Encode(stream, encodedAuthenticatedMessageV0.Mac); }
public static void Encode(XdrDataOutputStream stream, HmacSha256Key encodedHmacSha256Key) { int keysize = encodedHmacSha256Key.Key.Length; stream.Write(encodedHmacSha256Key.Key, 0, keysize); }
public static void Encode(XdrDataOutputStream stream, DontHave encodedDontHave) { MessageType.Encode(stream, encodedDontHave.Type); Uint256.Encode(stream, encodedDontHave.ReqHash); }
public static void Encode(XdrDataOutputStream stream, SCPEnvelope encodedSCPEnvelope) { SCPStatement.Encode(stream, encodedSCPEnvelope.Statement); Signature.Encode(stream, encodedSCPEnvelope.Signature); }
public static void Encode(XdrDataOutputStream stream, ChangeTrustOp encodedChangeTrustOp) { Asset.Encode(stream, encodedChangeTrustOp.Line); Int64.Encode(stream, encodedChangeTrustOp.Limit); }
public static void Encode(XdrDataOutputStream stream, LedgerKeyClaimableBalance encodedLedgerKeyClaimableBalance) { ClaimableBalanceID.Encode(stream, encodedLedgerKeyClaimableBalance.BalanceID); }
public static void Encode(XdrDataOutputStream stream, LedgerHeaderHistoryEntry encodedLedgerHeaderHistoryEntry) { Hash.Encode(stream, encodedLedgerHeaderHistoryEntry.Hash); LedgerHeader.Encode(stream, encodedLedgerHeaderHistoryEntry.Header); LedgerHeaderHistoryEntryExt.Encode(stream, encodedLedgerHeaderHistoryEntry.Ext); }
public static void Encode(XdrDataOutputStream stream, TransactionHistoryResultEntry encodedTransactionHistoryResultEntry) { Uint32.Encode(stream, encodedTransactionHistoryResultEntry.LedgerSeq); TransactionResultSet.Encode(stream, encodedTransactionHistoryResultEntry.TxResultSet); TransactionHistoryResultEntryExt.Encode(stream, encodedTransactionHistoryResultEntry.Ext); }
public static void Encode(XdrDataOutputStream stream, SequenceNumber encodedSequenceNumber) { Uint64.Encode(stream, encodedSequenceNumber.InnerValue); }
public static void Encode(XdrDataOutputStream stream, PaymentOp encodedPaymentOp) { AccountID.Encode(stream, encodedPaymentOp.Destination); Asset.Encode(stream, encodedPaymentOp.Asset); Int64.Encode(stream, encodedPaymentOp.Amount); }
public static void Encode(XdrDataOutputStream stream, AssetCode12 encodedAssetCode12) { int AssetCode12size = encodedAssetCode12.InnerValue.Length; stream.Write(encodedAssetCode12.InnerValue, 0, AssetCode12size); }
public static void Encode(XdrDataOutputStream stream, Error encodedError) { ErrorCode.Encode(stream, encodedError.Code); stream.WriteString(encodedError.Msg); }
public static void Encode(XdrDataOutputStream stream, LedgerKeyAccount encodedLedgerKeyAccount) { AccountID.Encode(stream, encodedLedgerKeyAccount.AccountID); }
public static void Encode(XdrDataOutputStream stream, SimplePaymentResult encodedSimplePaymentResult) { AccountID.Encode(stream, encodedSimplePaymentResult.Destination); Asset.Encode(stream, encodedSimplePaymentResult.Asset); Int64.Encode(stream, encodedSimplePaymentResult.Amount); }
public static void Encode(XdrDataOutputStream stream, LedgerKeyTrustLine encodedLedgerKeyTrustLine) { AccountID.Encode(stream, encodedLedgerKeyTrustLine.AccountID); Asset.Encode(stream, encodedLedgerKeyTrustLine.Asset); }
public static void Encode(XdrDataOutputStream stream, LedgerEntry encodedLedgerEntry) { Uint32.Encode(stream, encodedLedgerEntry.LastModifiedLedgerSeq); LedgerEntryData.Encode(stream, encodedLedgerEntry.Data); LedgerEntryExt.Encode(stream, encodedLedgerEntry.Ext); }
public static void Encode(XdrDataOutputStream stream, LedgerKeyOffer encodedLedgerKeyOffer) { AccountID.Encode(stream, encodedLedgerKeyOffer.SellerID); Int64.Encode(stream, encodedLedgerKeyOffer.OfferID); }
public static void Encode(XdrDataOutputStream stream, TimeBounds encodedTimeBounds) { Uint64.Encode(stream, encodedTimeBounds.MinTime); Uint64.Encode(stream, encodedTimeBounds.MaxTime); }
public static void Encode(XdrDataOutputStream stream, LedgerKeyData encodedLedgerKeyData) { AccountID.Encode(stream, encodedLedgerKeyData.AccountID); String64.Encode(stream, encodedLedgerKeyData.DataName); }
public static void Encode(XdrDataOutputStream stream, Int64 encodedInt64) { stream.WriteLong(encodedInt64.InnerValue); }
public async Task <string> BuildTransactionAsync(Guid operationId, AddressBalance from, string toAddress, string memoText, long amount) { var fromKeyPair = KeyPair.FromAccountId(from.Address); var fromAccount = new Account(fromKeyPair, from.Sequence); var toKeyPair = KeyPair.FromAccountId(toAddress); var transferableBalance = from.Balance - from.MinBalance; Operation operation; if (await _horizonService.AccountExists(toAddress)) { if (amount <= transferableBalance) { var asset = new AssetTypeNative(); operation = new PaymentOperation.Builder(toKeyPair, asset, Operation.FromXdrAmount(amount)) .SetSourceAccount(fromKeyPair) .Build(); } else if (!_balanceService.IsDepositBaseAddress(from.Address)) { operation = new AccountMergeOperation.Builder(toKeyPair) .SetSourceAccount(fromKeyPair) .Build(); } else { throw new BusinessException($"It isn't allowed to merge the entire balance from the deposit base into another account! Transfer less funds. transferable={transferableBalance}"); } } else { if (amount <= transferableBalance) { operation = new CreateAccountOperation.Builder(toKeyPair, Operation.FromXdrAmount(amount)) .SetSourceAccount(fromKeyPair) .Build(); } else { throw new BusinessException($"It isn't possible to merge the entire balance into an unused account! Use a destination in existance. transferable={transferableBalance}"); } } var builder = new TransactionBuilder(fromAccount) .AddOperation(operation) .SetFee(_appSettings.StellarApiService.OperationFee); if (!string.IsNullOrWhiteSpace(memoText)) { var memo = new MemoText(memoText); builder = builder.AddMemo(memo); } var tx = builder.Build(); var xdr = tx.ToUnsignedEnvelopeXdr(TransactionBase.TransactionXdrVersion.V1); var expirationDate = (DateTime.UtcNow + _transactionExpirationTime); var maxUnixTimeDouble = expirationDate.ToUnixTime() / 1000;//ms to seconds var maxTimeUnix = (ulong)maxUnixTimeDouble; xdr.V1.Tx.TimeBounds = new TimeBounds() { MaxTime = new TimePoint(new Uint64(maxTimeUnix)), MinTime = new TimePoint(new Uint64(0)), }; var writer = new XdrDataOutputStream(); stellar_dotnet_sdk.xdr.TransactionEnvelope.Encode(writer, xdr); var xdrBase64 = Convert.ToBase64String(writer.ToArray()); _log.Info("Transaction has been built", new { OperationId = operationId, From = from, To = toAddress, Memo = memoText, Amount = amount, Fee = tx.Fee, Sequence = tx.SequenceNumber, MaxTimeUnix = maxTimeUnix }); var build = new TxBuild { OperationId = operationId, XdrBase64 = xdrBase64 }; await _buildRepository.AddAsync(build); return(xdrBase64); }