コード例 #1
0
        public static LedgerEntry ReadLedgerEntry(this StReader reader)
        {
            var index = reader.ReadHash256();
            var obj   = reader.ReadVlStObject();

            obj[Field.index] = index;
            return(new LedgerEntry(obj));
        }
コード例 #2
0
ファイル: LedgerObject.cs プロジェクト: Ibasa/Ripple
        public static LedgerObject ReadSt(ref StReader reader)
        {
            var fieldId = reader.ReadFieldId();

            if (fieldId.TypeCode != StTypeCode.UInt16 || fieldId.FieldCode != 1)
            {
                throw new RippleException(
                          string.Format("Expected LedgerEntryType field, got {0}", fieldId));
            }
            var type = (StLedgerEntryType)reader.ReadUInt16();

            switch (type)
            {
            case StLedgerEntryType.AccountRoot:
                return(new AccountRootLedgerEntry(ref reader));

            case StLedgerEntryType.DirectoryNode:
                return(new DirectoryNodeLedgerEntry(ref reader));

            case StLedgerEntryType.RippleState:
                return(new RippleStateLedgerEntry(ref reader));

            case StLedgerEntryType.Ticket:
                return(new TicketLedgerEntry(ref reader));

            case StLedgerEntryType.SignerList:
                return(new SignerListLedgerEntry(ref reader));

            case StLedgerEntryType.Offer:
                return(new OfferLedgerEntry(ref reader));

            case StLedgerEntryType.LedgerHashes:
                return(new LedgerHashesLedgerEntry(ref reader));

            case StLedgerEntryType.Amendments:
                return(new AmendmentsLedgerEntry(ref reader));

            case StLedgerEntryType.FeeSettings:
                return(new FeeSettingsLedgerEntry(ref reader));

            case StLedgerEntryType.Escrow:
                return(new EscrowLedgerEntry(ref reader));

            case StLedgerEntryType.PayChannel:
                return(new PayChannelLedgerEntry(ref reader));

            case StLedgerEntryType.DepositPreauth:
                return(new DepositPreauthLedgerEntry(ref reader));

            case StLedgerEntryType.Check:
                return(new CheckLedgerEntry(ref reader));

            case StLedgerEntryType.NegativeUNL:
                return(new NegativeUNLLedgerEntry(ref reader));
            }

            throw new RippleException(string.Format("Unrecognized ledger entry type: {0}", type));
        }
コード例 #3
0
        public static TransactionResult ReadTransactionResult(this StReader reader, uint ledgerIndex = 0)
        {
            var hash = reader.ReadHash256();
            var txn  = reader.ReadVlStObject();
            var meta = reader.ReadVlStObject();

            txn[Field.hash] = hash;
            return(new TransactionResult(txn, meta, ledgerIndex));
        }
コード例 #4
0
ファイル: LedgerObject.cs プロジェクト: Ibasa/Ripple
 public LedgerHeader(StReader reader)
 {
     Sequence            = reader.ReadUInt32();
     TotalCoins          = reader.ReadUInt64();
     ParentHash          = reader.ReadHash256();
     TransactionHash     = reader.ReadHash256();
     AccountHash         = reader.ReadHash256();
     ParentCloseTime     = Epoch.ToDateTimeOffset(reader.ReadUInt32());
     CloseTime           = Epoch.ToDateTimeOffset(reader.ReadUInt32());
     CloseTimeResolution = reader.ReadUInt8();
     CloseFlags          = reader.ReadUInt8();
 }
コード例 #5
0
        public void HistoryLoaderTest()
        {
            const string history = @"Z:\windowsshare\history.bin";

            if (!File.Exists(history))
            {
                return;
            }
            var loader = new HistoryLoader(StReader.FromFile(history));

            loader.ParseFast((header, state, txns) => true);
        }
コード例 #6
0
ファイル: LedgerObject.cs プロジェクト: Ibasa/Ripple
        public Majority(ref StReader reader)
        {
            var fieldId = reader.ReadFieldId();

            if (fieldId != StFieldId.UInt32_CloseTime)
            {
                throw new Exception(string.Format("Expected {0} but got {1}", StFieldId.UInt32_CloseTime, fieldId));
            }
            CloseTime = Epoch.ToDateTimeOffset(reader.ReadUInt32());
            fieldId   = reader.ReadFieldId();
            if (fieldId != StFieldId.Hash256_Amendment)
            {
                throw new Exception(string.Format("Expected {0} but got {1}", StFieldId.Hash256_Amendment, fieldId));
            }
            Amendment = reader.ReadHash256();
            fieldId   = reader.ReadFieldId();
            if (fieldId != StFieldId.Object_ObjectEndMarker)
            {
                throw new Exception(string.Format("Expected {0} but got {1}", StFieldId.Object_ObjectEndMarker, fieldId));
            }
        }
コード例 #7
0
ファイル: LedgerObject.cs プロジェクト: Ibasa/Ripple
        public SignerEntry(ref StReader reader)
        {
            var fieldId = reader.ReadFieldId();

            if (fieldId != StFieldId.UInt16_SignerWeight)
            {
                throw new Exception(string.Format("Expected {0} but got {1}", StFieldId.UInt16_SignerWeight, fieldId));
            }
            SignerWeight = reader.ReadUInt16();
            fieldId      = reader.ReadFieldId();
            if (fieldId != StFieldId.AccountID_Account)
            {
                throw new Exception(string.Format("Expected {0} but got {1}", StFieldId.AccountID_Account, fieldId));
            }
            Account = reader.ReadAccount();
            fieldId = reader.ReadFieldId();
            if (fieldId != StFieldId.Object_ObjectEndMarker)
            {
                throw new Exception(string.Format("Expected {0} but got {1}", StFieldId.Object_ObjectEndMarker, fieldId));
            }
        }
コード例 #8
0
ファイル: LedgerHeader.cs プロジェクト: fs0c131y/BitfiSources
        }                                             // Flags

        public static LedgerHeader FromReader(StReader reader)
        {
            var pos = reader.Parser().Pos();
            // ReSharper disable once UseObjectOrCollectionInitializer
            var header = new LedgerHeader();

            header.LedgerIndex     = reader.ReadUint32();
            header.TotalDrops      = reader.ReadUint64();
            header.ParentHash      = reader.ReadHash256();
            header.TransactionHash = reader.ReadHash256();
            header.StateHash       = reader.ReadHash256();
            header.ParentCloseTime = reader.ReadUint32();
            header.CloseTime       = reader.ReadUint32();
            header.CloseResolution = reader.ReadUint8();
            header.CloseFlags      = reader.ReadUint8();

            if (reader.Parser().Pos() != pos + 118)
            {
                throw new InvalidOperationException();
            }
            return(header);
        }
コード例 #9
0
ファイル: AccountRootTests.cs プロジェクト: Ibasa/Ripple
        public void TestExample()
        {
            var         utf8 = System.Text.Encoding.UTF8.GetBytes("11006122000000002400000001250062FEA42D0000000055C204A65CF2542946289A3358C67D991B5E135FABFA89F271DBA7A150C08CA0466240000000354540208114C909F42250CFE8F12A7A1A0DFBD3CBD20F32CD79");
            Span <byte> data = new byte[Base16.GetDecodedFromUtf8Length(utf8.Length)];

            Assert.Equal(System.Buffers.OperationStatus.Done, Base16.DecodeFromUtf8(utf8, data, out var _, out var _));

            var reader = new StReader(data);

            Assert.Equal(StFieldId.UInt16_LedgerEntryType, reader.ReadFieldId());
            Assert.Equal(StLedgerEntryType.AccountRoot, (StLedgerEntryType)reader.ReadUInt16());

            var accountRoot = new AccountRootLedgerEntry(ref reader);

            Assert.Equal(new AccountId("rKKzk9ghA2iuy3imqMXUHJqdRPMtNDGf4c"), accountRoot.Account);
            Assert.Equal(XrpAmount.FromDrops(893730848), accountRoot.Balance);
            Assert.Equal(AccountRootFlags.None, accountRoot.Flags);
            Assert.Equal(0u, accountRoot.OwnerCount);
            Assert.Equal(new Hash256("C204A65CF2542946289A3358C67D991B5E135FABFA89F271DBA7A150C08CA046"), accountRoot.PreviousTxnID);
            Assert.Equal(6487716u, accountRoot.PreviousTxnLgrSeq);
            Assert.Equal(1u, accountRoot.Sequence);
            Assert.Equal(new Hash256("00001A2969BE1FC85F1D7A55282FA2E6D95C71D2E4B9C0FDD3D9994F3C00FF8F"), accountRoot.ID);
            Assert.Equal(data.Length, reader.ConsumedBytes);
        }
コード例 #10
0
ファイル: LedgerObject.cs プロジェクト: Ibasa/Ripple
 public DisabledValidator(ref StReader reader)
 {
     FirstLedgerSequence = reader.ReadUInt32();
     PublicKey           = reader.ReadBlob();
 }
コード例 #11
0
 internal Signer(ref StReader reader)
 {
     throw new NotImplementedException();
 }
コード例 #12
0
 internal Memo(ref StReader reader)
 {
     throw new NotImplementedException();
 }
コード例 #13
0
 public HistoryLoader(StReader reader)
 {
     _reader = reader;
 }