/// <summary> /// Create a new MuxedAccountMed25519 from an account id in the format "M...". /// </summary> /// <param name="muxedAccountId"></param> /// <returns></returns> public static MuxedAccountMed25519 FromMuxedAccountId(string muxedAccountId) { var(id, data) = StrKey.DecodeStellarMuxedAccount(muxedAccountId); var key = KeyPair.FromPublicKey(data); return(new MuxedAccountMed25519(key, id)); }
/// <summary> /// Create a new MuxedAccountMed25519 from the xdr object. /// </summary> /// <param name="muxed"></param> /// <returns></returns> public static MuxedAccountMed25519 FromMuxedAccountXdr(xdr.MuxedAccount.MuxedAccountMed25519 muxed) { var innerKey = KeyPair.FromPublicKey(muxed.Ed25519.InnerValue); var id = muxed.Id.InnerValue; return(new MuxedAccountMed25519(innerKey, id)); }
public static IAccountId FromXdrMuxedAccount(xdr.MuxedAccount muxedAccount) { switch (muxedAccount.Discriminant.InnerValue) { case CryptoKeyType.CryptoKeyTypeEnum.KEY_TYPE_ED25519: return(KeyPair.FromPublicKey(muxedAccount.Ed25519.InnerValue)); case CryptoKeyType.CryptoKeyTypeEnum.KEY_TYPE_MUXED_ED25519: return(MuxedAccountMed25519.FromMuxedAccountXdr(muxedAccount.Med25519)); default: throw new InvalidOperationException("Invalid MuxedAccount type"); } }
public static Transaction FromEnvelopeXdrV0(TransactionV0Envelope envelope) { var transactionXdr = envelope.Tx; var fee = transactionXdr.Fee.InnerValue; KeyPair sourceAccount = KeyPair.FromPublicKey(transactionXdr.SourceAccountEd25519.InnerValue); long sequenceNumber = transactionXdr.SeqNum.InnerValue.InnerValue; Memo memo = Memo.FromXdr(transactionXdr.Memo); TimeBounds timeBounds = TimeBounds.FromXdr(transactionXdr.TimeBounds); Operation[] operations = new Operation[transactionXdr.Operations.Length]; for (int i = 0; i < transactionXdr.Operations.Length; i++) { operations[i] = Operation.FromXdr(transactionXdr.Operations[i]); } Transaction transaction = new Transaction(sourceAccount, fee, sequenceNumber, operations, memo, timeBounds); foreach (var signature in envelope.Signatures) { transaction.Signatures.Add(signature); } return(transaction); }