mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-27 23:55:49 +00:00
Lint utils directory (#1563)
* Lint the utils directory * Modify computeLedgerHash to take new Ledger format.
This commit is contained in:
committed by
Mayukha Vadari
parent
33f83947f1
commit
633032ddd8
22
test/fixtures/requests/computeLedgerHash.json
vendored
22
test/fixtures/requests/computeLedgerHash.json
vendored
@@ -1,11 +1,15 @@
|
||||
{
|
||||
"stateHash": "D9ABF622DA26EEEE48203085D4BC23B0F77DC6F8724AC33D975DA3CA492D2E44",
|
||||
"closeTime": "2015-08-12T01:01:10.000Z",
|
||||
"parentCloseTime": "2015-08-12T01:01:00.000Z",
|
||||
"closeFlags": 0,
|
||||
"closeTimeResolution": 10,
|
||||
"ledgerVersion": 15202439,
|
||||
"parentLedgerHash": "12724A65B030C15A1573AA28B1BBB5DF3DA4589AA3623675A31CAE69B23B1C4E",
|
||||
"totalDrops": "99998831688050493",
|
||||
"transactionHash": "325EACC5271322539EEEC2D6A5292471EF1B3E72AE7180533EFC3B8F0AD435C8"
|
||||
"account_hash": "D9ABF622DA26EEEE48203085D4BC23B0F77DC6F8724AC33D975DA3CA492D2E44",
|
||||
"close_time": 492656470,
|
||||
"parent_close_time": 492656460,
|
||||
"close_flags": 0,
|
||||
"ledger_index": "15202439",
|
||||
"close_time_human": "2015-Aug-12 01:01:10.000000000 UTC",
|
||||
"close_time_resolution": 10,
|
||||
"closed": true,
|
||||
"hash": "F4D865D83EB88C1A1911B9E90641919A1314F36E1B099F8E95FE3B7C77BE3349",
|
||||
"ledger_hash": "F4D865D83EB88C1A1911B9E90641919A1314F36E1B099F8E95FE3B7C77BE3349",
|
||||
"parent_hash": "12724A65B030C15A1573AA28B1BBB5DF3DA4589AA3623675A31CAE69B23B1C4E",
|
||||
"total_coins": "99998831688050493",
|
||||
"transaction_hash": "325EACC5271322539EEEC2D6A5292471EF1B3E72AE7180533EFC3B8F0AD435C8"
|
||||
}
|
||||
|
||||
@@ -1,21 +1,16 @@
|
||||
[
|
||||
{
|
||||
"hash": "F8F337DEE5D5B238A10AF4A4D56926BA26C83EE7AF5A5A6474340C56F9252DF3",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1608,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "120000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "03BC0973F997BC6384BE455B163519A3E96BC2D725C37F7172D5FED5DD38E2A357",
|
||||
"TxnSignature": "3045022100D80A1802B00AEEF9FDFDE594B0D568217A312D54E6337B8519C0D699841EFB96022067F6913B13D0EC2354C5A67CE0A41AE4181A09CD08A1BB0638D128D357961006",
|
||||
"Account": "rDPL68aNpdfp9h59R4QT5R6B1Z2W9oRc51",
|
||||
"Destination": "rE4S4Xw8euysJ3mt7gmK8EhhYEwmALpb3R"
|
||||
},
|
||||
"meta": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1608,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "120000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "03BC0973F997BC6384BE455B163519A3E96BC2D725C37F7172D5FED5DD38E2A357",
|
||||
"TxnSignature": "3045022100D80A1802B00AEEF9FDFDE594B0D568217A312D54E6337B8519C0D699841EFB96022067F6913B13D0EC2354C5A67CE0A41AE4181A09CD08A1BB0638D128D357961006",
|
||||
"Account": "rDPL68aNpdfp9h59R4QT5R6B1Z2W9oRc51",
|
||||
"Destination": "rE4S4Xw8euysJ3mt7gmK8EhhYEwmALpb3R",
|
||||
"metaData": {
|
||||
"TransactionIndex": 6,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
@@ -60,22 +55,17 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"hash": "F8D5DE632B1D8B64E577C46912CCE483D6DF4FD4E2CF4A3D586A099DE3B27021",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 18874,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "120000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "035D097E75D4B35345CEB30F9B1D18CB81165FE6ADD02481AA5B02B5F9C8107EE1",
|
||||
"TxnSignature": "304402203D80E8BC71908AB345948AB71FB7B8DE239DD79636D96D3C5BDA2B2F192A5EEA0220686413D69BF0D813FC61DABD437AEFAAE69925D3E10FCD5B2C4D90B5AF7B883D",
|
||||
"Account": "rnHScgV6wSP9sR25uYWiMo3QYNA5ybQ7cH",
|
||||
"Destination": "rwnnfHDaEAwXaVji52cWWizbHVMs2Cz5K9"
|
||||
},
|
||||
"meta": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 18874,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "120000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "035D097E75D4B35345CEB30F9B1D18CB81165FE6ADD02481AA5B02B5F9C8107EE1",
|
||||
"TxnSignature": "304402203D80E8BC71908AB345948AB71FB7B8DE239DD79636D96D3C5BDA2B2F192A5EEA0220686413D69BF0D813FC61DABD437AEFAAE69925D3E10FCD5B2C4D90B5AF7B883D",
|
||||
"Account": "rnHScgV6wSP9sR25uYWiMo3QYNA5ybQ7cH",
|
||||
"Destination": "rwnnfHDaEAwXaVji52cWWizbHVMs2Cz5K9",
|
||||
"metaData": {
|
||||
"TransactionIndex": 5,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
@@ -120,22 +110,17 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"hash": "E9004490A92413E92DACD621AC73FD434A8950C350F7572FFEAF4D6AAF8FC288",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1615,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "400000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "03ACFAA11628C558AB5E7FA64705F442BDAABA6E9D318B30E010BC87CDEA8D1D7D",
|
||||
"TxnSignature": "3045022100A3530C2E983FB05DFF27172C649494291F7BEBA2E6A59EEAF945CB9728D1DB5E022015BCA0E9D69760224DD7C2B68F3BC1F239D89C3397161AA3901C2E04EE31C18F",
|
||||
"Account": "razcSDpwds1aTeqDphqzBr7ay1ZELYAWTm",
|
||||
"Destination": "rhuqJAE2UfhGCvkR7Ve35bvm39JmRvFML4"
|
||||
},
|
||||
"meta": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1615,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "400000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "03ACFAA11628C558AB5E7FA64705F442BDAABA6E9D318B30E010BC87CDEA8D1D7D",
|
||||
"TxnSignature": "3045022100A3530C2E983FB05DFF27172C649494291F7BEBA2E6A59EEAF945CB9728D1DB5E022015BCA0E9D69760224DD7C2B68F3BC1F239D89C3397161AA3901C2E04EE31C18F",
|
||||
"Account": "razcSDpwds1aTeqDphqzBr7ay1ZELYAWTm",
|
||||
"Destination": "rhuqJAE2UfhGCvkR7Ve35bvm39JmRvFML4",
|
||||
"metaData": {
|
||||
"TransactionIndex": 4,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
@@ -180,22 +165,17 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"hash": "D44BFF924D23211B82B8F604AF6D92F260F8DD13103A96F03E48825C4A978FD6",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1674,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "800000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "028F28D78FDA74222F4008F012247DF3BBD42B90CE4CFD87E29598196108E91B52",
|
||||
"TxnSignature": "3044022065A003194D91E774D180BE47D4E086BB2624BC8F6DB7C655E135D5C6C03BBC7C02205DC961C2B7A06D701B29C2116ACF6F84CC84205FF44411576C15507852ECC31C",
|
||||
"Account": "rQGLp9nChtWkdgcHjj6McvJithN2S2HJsP",
|
||||
"Destination": "rEUubanepAAugnNJY1gxEZLDnk9W5NCoFU"
|
||||
},
|
||||
"meta": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1674,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "800000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "028F28D78FDA74222F4008F012247DF3BBD42B90CE4CFD87E29598196108E91B52",
|
||||
"TxnSignature": "3044022065A003194D91E774D180BE47D4E086BB2624BC8F6DB7C655E135D5C6C03BBC7C02205DC961C2B7A06D701B29C2116ACF6F84CC84205FF44411576C15507852ECC31C",
|
||||
"Account": "rQGLp9nChtWkdgcHjj6McvJithN2S2HJsP",
|
||||
"Destination": "rEUubanepAAugnNJY1gxEZLDnk9W5NCoFU",
|
||||
"metaData": {
|
||||
"TransactionIndex": 3,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
@@ -240,39 +220,34 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"hash": "C978D915BFB17687335CBFC4B207D9E7213BCEE35B468C2EEE016CDCE4EDB6E4",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "OfferCreate",
|
||||
"Sequence": 289444,
|
||||
"OfferSequence": 289443,
|
||||
"LastLedgerSequence": 15202441,
|
||||
"TakerPays": {
|
||||
"value": "19.99999999991",
|
||||
"currency": "EUR",
|
||||
"issuer": "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q"
|
||||
},
|
||||
"TakerGets": {
|
||||
"value": "20.88367500010602",
|
||||
"currency": "USD",
|
||||
"issuer": "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q"
|
||||
},
|
||||
"Fee": "10000",
|
||||
"SigningPubKey": "024D129D4F5A12D4C5A9E9D1E4AC447BBE3496F182FAE82F7709C7EB9F12DBC697",
|
||||
"TxnSignature": "3044022041EBE6B06BA493867F4FFBD72E5D6253F97306E1E82DABDF9649E15B1151B59F0220539C589F40174471C067FDC761A2B791F36F1A3C322734B43DB16880E489BD81",
|
||||
"Account": "rD8LigXE7165r3VWhSQ4FwzJy7PNrTMwUq",
|
||||
"Memos": [
|
||||
{
|
||||
"Memo": {
|
||||
"MemoType": "6F666665725F636F6D6D656E74",
|
||||
"MemoData": "72655F6575722368656467655F726970706C65",
|
||||
"parsed_memo_type": "offer_comment"
|
||||
}
|
||||
}
|
||||
]
|
||||
"TransactionType": "OfferCreate",
|
||||
"Sequence": 289444,
|
||||
"OfferSequence": 289443,
|
||||
"LastLedgerSequence": 15202441,
|
||||
"TakerPays": {
|
||||
"value": "19.99999999991",
|
||||
"currency": "EUR",
|
||||
"issuer": "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q"
|
||||
},
|
||||
"meta": {
|
||||
"TakerGets": {
|
||||
"value": "20.88367500010602",
|
||||
"currency": "USD",
|
||||
"issuer": "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q"
|
||||
},
|
||||
"Fee": "10000",
|
||||
"SigningPubKey": "024D129D4F5A12D4C5A9E9D1E4AC447BBE3496F182FAE82F7709C7EB9F12DBC697",
|
||||
"TxnSignature": "3044022041EBE6B06BA493867F4FFBD72E5D6253F97306E1E82DABDF9649E15B1151B59F0220539C589F40174471C067FDC761A2B791F36F1A3C322734B43DB16880E489BD81",
|
||||
"Account": "rD8LigXE7165r3VWhSQ4FwzJy7PNrTMwUq",
|
||||
"Memos": [
|
||||
{
|
||||
"Memo": {
|
||||
"MemoType": "6F666665725F636F6D6D656E74",
|
||||
"MemoData": "72655F6575722368656467655F726970706C65",
|
||||
"parsed_memo_type": "offer_comment"
|
||||
}
|
||||
}
|
||||
],
|
||||
"metaData": {
|
||||
"TransactionIndex": 2,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
@@ -372,20 +347,15 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"hash": "31B34FD7C90CDC6CF680A814DEBC6F616C69275C0E99711F904DE088A8ED4B28",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "AccountSet",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 387262,
|
||||
"LastLedgerSequence": 15202440,
|
||||
"Fee": "10500",
|
||||
"SigningPubKey": "027DFE042DC2BD07D2E88DD526A5FBF816C831C25CA0BB62A3BF320A3B2BA6DB5C",
|
||||
"TxnSignature": "30440220572D89688D9F9DB9874CDDDD3EBDCB5808A836982864C81F185FBC54FAD1A7B902202E09AAA6D65EECC9ACDEA7F70D8D2EE024152C7B288FA9E42C427260CF922F58",
|
||||
"Account": "rn6uAt46Xi6uxA2dRCtqaJyM3aaP6V9WWM"
|
||||
},
|
||||
"meta": {
|
||||
"TransactionType": "AccountSet",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 387262,
|
||||
"LastLedgerSequence": 15202440,
|
||||
"Fee": "10500",
|
||||
"SigningPubKey": "027DFE042DC2BD07D2E88DD526A5FBF816C831C25CA0BB62A3BF320A3B2BA6DB5C",
|
||||
"TxnSignature": "30440220572D89688D9F9DB9874CDDDD3EBDCB5808A836982864C81F185FBC54FAD1A7B902202E09AAA6D65EECC9ACDEA7F70D8D2EE024152C7B288FA9E42C427260CF922F58",
|
||||
"Account": "rn6uAt46Xi6uxA2dRCtqaJyM3aaP6V9WWM",
|
||||
"metaData": {
|
||||
"TransactionIndex": 1,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
@@ -412,22 +382,17 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"hash": "260BC2964FFE6D81CB25C152F8054FFB2CE6ED04FF89D8D0D0559BC14BEF0E46",
|
||||
"date": "2015-08-12T01:01:10+00:00",
|
||||
"ledger_index": 15202439,
|
||||
"tx": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1673,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "1700000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "02C26CF5D395A1CB352BE10D5AAB73FE27FC0AFAE0BD6121E55D097EBDCF394E11",
|
||||
"TxnSignature": "304402204190B6DC7D14B1CC8DDAA87F1C01FEDA6D67D598D65E1AA19D4ADE937ED14B720220662EE404438F415AD3335B9FBA1A4C2A5F72AA387740D8A011A8C53346481B1D",
|
||||
"Account": "rEE77T1E5vEFcEB9zM92jBD3rPs3kPdS1j",
|
||||
"Destination": "r3AsrDRMNYaKNCofo9a5Us7R66RAzTigiU"
|
||||
},
|
||||
"meta": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 2147483648,
|
||||
"Sequence": 1673,
|
||||
"LastLedgerSequence": 15202446,
|
||||
"Amount": "1700000000",
|
||||
"Fee": "15000",
|
||||
"SigningPubKey": "02C26CF5D395A1CB352BE10D5AAB73FE27FC0AFAE0BD6121E55D097EBDCF394E11",
|
||||
"TxnSignature": "304402204190B6DC7D14B1CC8DDAA87F1C01FEDA6D67D598D65E1AA19D4ADE937ED14B720220662EE404438F415AD3335B9FBA1A4C2A5F72AA387740D8A011A8C53346481B1D",
|
||||
"Account": "rEE77T1E5vEFcEB9zM92jBD3rPs3kPdS1j",
|
||||
"Destination": "r3AsrDRMNYaKNCofo9a5Us7R66RAzTigiU",
|
||||
"metaData": {
|
||||
"TransactionIndex": 0,
|
||||
"AffectedNodes": [
|
||||
{
|
||||
|
||||
2
test/fixtures/requests/index.ts
vendored
2
test/fixtures/requests/index.ts
vendored
@@ -178,7 +178,7 @@ const getOrderbook = {
|
||||
}
|
||||
|
||||
const computeLedgerHash = {
|
||||
header: { ...header, rawTransactions: JSON.stringify(transactions) },
|
||||
header,
|
||||
transactions,
|
||||
}
|
||||
|
||||
|
||||
1
test/fixtures/responses/generateAddress.json
vendored
1
test/fixtures/responses/generateAddress.json
vendored
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"xAddress": "XVLcsWWNiFdUEqoDmSwgxh1abfddG1LtbGFk7omPgYpbyE8",
|
||||
"classicAddress": "rGCkuB7PBr5tNy68tPEABEtcdno4hE6Y7f",
|
||||
"address": "rGCkuB7PBr5tNy68tPEABEtcdno4hE6Y7f",
|
||||
"secret": "sp6JS7f14BuwFY8Mw6bTtLKWauoUs"
|
||||
}
|
||||
|
||||
20
test/fixtures/responses/getLedger.json
vendored
20
test/fixtures/responses/getLedger.json
vendored
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"stateHash": "EC028EC32896D537ECCA18D18BEBE6AE99709FEFF9EF72DBD3A7819E918D8B96",
|
||||
"closeTime": "2014-09-24T21:21:50.000Z",
|
||||
"closeTimeResolution": 10,
|
||||
"closeFlags": 0,
|
||||
"ledgerHash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
|
||||
"ledgerVersion": 9038214,
|
||||
"parentLedgerHash": "4BB9CBE44C39DC67A1BE849C7467FE1A6D1F73949EA163C38A0121A15E04FFDE",
|
||||
"parentCloseTime": "2014-09-24T21:21:40.000Z",
|
||||
"totalDrops": "99999973964317514",
|
||||
"transactionHash": "ECB730839EB55B1B114D5D1AD2CD9A932C35BA9AB6D3A8C2F08935EAC2BAC239"
|
||||
"account_hash": "EC028EC32896D537ECCA18D18BEBE6AE99709FEFF9EF72DBD3A7819E918D8B96",
|
||||
"close_time": "2014-09-24T21:21:50.000Z",
|
||||
"close_time_resolution": 10,
|
||||
"close_flags": 0,
|
||||
"ledger_hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
|
||||
"ledger_index": 9038214,
|
||||
"parent_hash": "4BB9CBE44C39DC67A1BE849C7467FE1A6D1F73949EA163C38A0121A15E04FFDE",
|
||||
"parent_close_time": "2014-09-24T21:21:40.000Z",
|
||||
"total_coins": "99999973964317514",
|
||||
"transaction_hash": "ECB730839EB55B1B114D5D1AD2CD9A932C35BA9AB6D3A8C2F08935EAC2BAC239"
|
||||
}
|
||||
|
||||
25
test/fixtures/responses/getLedgerFull.json
vendored
25
test/fixtures/responses/getLedgerFull.json
vendored
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
import assert from 'assert'
|
||||
|
||||
import { SHAMap, NodeType } from '../src/utils/hashes/shamap'
|
||||
import SHAMap, { NodeType } from '../src/utils/hashes/shaMap'
|
||||
|
||||
const TYPE_TRANSACTION_NO_METADATA = NodeType.TRANSACTION_NO_METADATA
|
||||
|
||||
|
||||
@@ -1,34 +1,45 @@
|
||||
import { assert } from 'chai'
|
||||
|
||||
import { ValidationError } from '../../src/common/errors'
|
||||
import { computeLedgerHeaderHash } from '../../src/utils'
|
||||
import { computeLedgerHash } from '../../src/utils'
|
||||
import requests from '../fixtures/requests'
|
||||
import responses from '../fixtures/responses'
|
||||
import { assertResultMatch } from '../testUtils'
|
||||
|
||||
const { computeLedgerHash: REQUEST_FIXTURES } = requests
|
||||
|
||||
describe('computeLedgerHash', function () {
|
||||
let ledger
|
||||
beforeEach(function () {
|
||||
ledger = JSON.parse(JSON.stringify(responses.getLedger.full))
|
||||
|
||||
if (ledger.rawState != null) {
|
||||
ledger.accountState = JSON.parse(ledger.rawState)
|
||||
}
|
||||
})
|
||||
|
||||
it('given corrupt data - should fail', function () {
|
||||
const ledger = JSON.parse(JSON.stringify(responses.getLedger.full))
|
||||
ledger.transactions[0].rawTransaction =
|
||||
'{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Amount":"12000000000","Destination":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Fee":"10","Flags":0,"Sequence":62,"SigningPubKey":"034AADB09CFF4A4804073701EC53C3510CDC95917C2BB0150FB742D0C66E6CEE9E","TransactionType":"Payment","TxnSignature":"3045022022EB32AECEF7C644C891C19F87966DF9C62B1F34BABA6BE774325E4BB8E2DD62022100A51437898C28C2B297112DF8131F2BB39EA5FE613487DDD611525F1796264639","hash":"3B1A4E1C9BB6A7208EB146BCDB86ECEA6068ED01466D933528CA2B4C64F753EF","meta":{"AffectedNodes":[{"CreatedNode":{"LedgerEntryType":"AccountRoot","LedgerIndex":"4C6ACBD635B0F07101F7FA25871B0925F8836155462152172755845CE691C49E","NewFields":{"Account":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Balance":"10000000000","Sequence":1}}},{"ModifiedNode":{"FinalFields":{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Balance":"981481999380","Flags":0,"OwnerCount":0,"Sequence":63},"LedgerEntryType":"AccountRoot","LedgerIndex":"B33FDD5CF3445E1A7F2BE9B06336BEBD73A5E3EE885D3EF93F7E3E2992E46F1A","PreviousFields":{"Balance":"991481999390","Sequence":62},"PreviousTxnID":"2485FDC606352F1B0785DA5DE96FB9DBAF43EB60ECBB01B7F6FA970F512CDA5F","PreviousTxnLgrSeq":31317}}],"TransactionIndex":0,"TransactionResult":"tesSUCCESS"},"ledger_index":38129}'
|
||||
ledger.parentCloseTime = ledger.closeTime
|
||||
let hash: string
|
||||
ledger.transactions[0] = JSON.parse(
|
||||
'{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Amount":"12000000000","Destination":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Fee":"10","Flags":0,"Sequence":62,"SigningPubKey":"034AADB09CFF4A4804073701EC53C3510CDC95917C2BB0150FB742D0C66E6CEE9E","TransactionType":"Payment","TxnSignature":"3045022022EB32AECEF7C644C891C19F87966DF9C62B1F34BABA6BE774325E4BB8E2DD62022100A51437898C28C2B297112DF8131F2BB39EA5FE613487DDD611525F1796264639","hash":"3B1A4E1C9BB6A7208EB146BCDB86ECEA6068ED01466D933528CA2B4C64F753EF","metaData":{"AffectedNodes":[{"CreatedNode":{"LedgerEntryType":"AccountRoot","LedgerIndex":"4C6ACBD635B0F07101F7FA25871B0925F8836155462152172755845CE691C49E","NewFields":{"Account":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Balance":"10000000000","Sequence":1}}},{"ModifiedNode":{"FinalFields":{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Balance":"981481999380","Flags":0,"OwnerCount":0,"Sequence":63},"LedgerEntryType":"AccountRoot","LedgerIndex":"B33FDD5CF3445E1A7F2BE9B06336BEBD73A5E3EE885D3EF93F7E3E2992E46F1A","PreviousFields":{"Balance":"991481999390","Sequence":62},"PreviousTxnID":"2485FDC606352F1B0785DA5DE96FB9DBAF43EB60ECBB01B7F6FA970F512CDA5F","PreviousTxnLgrSeq":31317}}],"TransactionIndex":0,"TransactionResult":"tesSUCCESS"},"ledger_index":38129}',
|
||||
)
|
||||
|
||||
ledger.parent_close_time = ledger.close_time
|
||||
let hash
|
||||
try {
|
||||
hash = computeLedgerHeaderHash(ledger, { computeTreeHashes: true })
|
||||
hash = computeLedgerHash(ledger, { computeTreeHashes: true })
|
||||
} catch (error) {
|
||||
assert(error instanceof ValidationError)
|
||||
assert.strictEqual(
|
||||
error.message,
|
||||
'transactionHash in header does not match computed hash of transactions',
|
||||
)
|
||||
assert.deepStrictEqual(error.data, {
|
||||
transactionHashInHeader:
|
||||
'DB83BF807416C5B3499A73130F843CF615AB8E797D79FE7D330ADF1BFA93951A',
|
||||
computedHashOfTransactions:
|
||||
'EAA1ADF4D627339450F0E95EA88B7069186DD64230BAEBDCF3EEC4D616A9FC68',
|
||||
})
|
||||
if (error instanceof ValidationError) {
|
||||
assert.strictEqual(
|
||||
error.message,
|
||||
'transactionHash in header does not match computed hash of transactions',
|
||||
)
|
||||
assert.deepStrictEqual(error.data, {
|
||||
transactionHashInHeader:
|
||||
'DB83BF807416C5B3499A73130F843CF615AB8E797D79FE7D330ADF1BFA93951A',
|
||||
computedHashOfTransactions:
|
||||
'EAA1ADF4D627339450F0E95EA88B7069186DD64230BAEBDCF3EEC4D616A9FC68',
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
assert(
|
||||
@@ -38,77 +49,68 @@ describe('computeLedgerHash', function () {
|
||||
})
|
||||
|
||||
it('given ledger without raw transactions - should throw', function () {
|
||||
const ledger = JSON.parse(JSON.stringify(responses.getLedger.full))
|
||||
delete ledger.transactions[0].rawTransaction
|
||||
delete ledger.transactions
|
||||
ledger.parentCloseTime = ledger.closeTime
|
||||
let hash: string
|
||||
try {
|
||||
hash = computeLedgerHeaderHash(ledger, { computeTreeHashes: true })
|
||||
} catch (error) {
|
||||
assert(error instanceof ValidationError)
|
||||
assert.strictEqual(error.message, 'ledger is missing raw transactions')
|
||||
return
|
||||
}
|
||||
assert(
|
||||
false,
|
||||
`Should throw ValidationError instead of producing hash: ${hash}`,
|
||||
|
||||
assert.throws(
|
||||
() => computeLedgerHash(ledger, { computeTreeHashes: true }),
|
||||
ValidationError,
|
||||
'transactions is missing from the ledger',
|
||||
)
|
||||
})
|
||||
|
||||
it('given ledger without state or transactions - only compute ledger hash', function () {
|
||||
const ledger = JSON.parse(JSON.stringify(responses.getLedger.full))
|
||||
assert.strictEqual(
|
||||
ledger.transactions[0].rawTransaction,
|
||||
'{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Amount":"10000000000","Destination":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Fee":"10","Flags":0,"Sequence":62,"SigningPubKey":"034AADB09CFF4A4804073701EC53C3510CDC95917C2BB0150FB742D0C66E6CEE9E","TransactionType":"Payment","TxnSignature":"3045022022EB32AECEF7C644C891C19F87966DF9C62B1F34BABA6BE774325E4BB8E2DD62022100A51437898C28C2B297112DF8131F2BB39EA5FE613487DDD611525F1796264639","hash":"3B1A4E1C9BB6A7208EB146BCDB86ECEA6068ED01466D933528CA2B4C64F753EF","meta":{"AffectedNodes":[{"CreatedNode":{"LedgerEntryType":"AccountRoot","LedgerIndex":"4C6ACBD635B0F07101F7FA25871B0925F8836155462152172755845CE691C49E","NewFields":{"Account":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Balance":"10000000000","Sequence":1}}},{"ModifiedNode":{"FinalFields":{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Balance":"981481999380","Flags":0,"OwnerCount":0,"Sequence":63},"LedgerEntryType":"AccountRoot","LedgerIndex":"B33FDD5CF3445E1A7F2BE9B06336BEBD73A5E3EE885D3EF93F7E3E2992E46F1A","PreviousFields":{"Balance":"991481999390","Sequence":62},"PreviousTxnID":"2485FDC606352F1B0785DA5DE96FB9DBAF43EB60ECBB01B7F6FA970F512CDA5F","PreviousTxnLgrSeq":31317}}],"TransactionIndex":0,"TransactionResult":"tesSUCCESS"},"ledger_index":38129}',
|
||||
ledger.transactions[0] = JSON.parse(
|
||||
'{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Amount":"10000000000","Destination":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Fee":"10","Flags":0,"Sequence":62,"SigningPubKey":"034AADB09CFF4A4804073701EC53C3510CDC95917C2BB0150FB742D0C66E6CEE9E","TransactionType":"Payment","TxnSignature":"3045022022EB32AECEF7C644C891C19F87966DF9C62B1F34BABA6BE774325E4BB8E2DD62022100A51437898C28C2B297112DF8131F2BB39EA5FE613487DDD611525F1796264639","hash":"3B1A4E1C9BB6A7208EB146BCDB86ECEA6068ED01466D933528CA2B4C64F753EF","metaData":{"AffectedNodes":[{"CreatedNode":{"LedgerEntryType":"AccountRoot","LedgerIndex":"4C6ACBD635B0F07101F7FA25871B0925F8836155462152172755845CE691C49E","NewFields":{"Account":"rLQBHVhFnaC5gLEkgr6HgBJJ3bgeZHg9cj","Balance":"10000000000","Sequence":1}}},{"ModifiedNode":{"FinalFields":{"Account":"r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV","Balance":"981481999380","Flags":0,"OwnerCount":0,"Sequence":63},"LedgerEntryType":"AccountRoot","LedgerIndex":"B33FDD5CF3445E1A7F2BE9B06336BEBD73A5E3EE885D3EF93F7E3E2992E46F1A","PreviousFields":{"Balance":"991481999390","Sequence":62},"PreviousTxnID":"2485FDC606352F1B0785DA5DE96FB9DBAF43EB60ECBB01B7F6FA970F512CDA5F","PreviousTxnLgrSeq":31317}}],"TransactionIndex":0,"TransactionResult":"tesSUCCESS"},"ledger_index":38129}',
|
||||
)
|
||||
ledger.parentCloseTime = ledger.closeTime
|
||||
const computeLedgerHash = computeLedgerHeaderHash
|
||||
function testCompute(ledgerToCompute, expectedError): void {
|
||||
let hash = computeLedgerHash(ledgerToCompute)
|
||||
|
||||
ledger.parent_close_time = ledger.close_time
|
||||
|
||||
function testCompute(ledgerToTest, expectedError): void {
|
||||
const hash = computeLedgerHash(ledgerToTest)
|
||||
assert.strictEqual(
|
||||
hash,
|
||||
'E6DB7365949BF9814D76BCC730B01818EB9136A89DB224F3F9F5AAE4569D758E',
|
||||
)
|
||||
|
||||
// fail if required to compute tree hashes
|
||||
try {
|
||||
hash = computeLedgerHash(ledgerToCompute, { computeTreeHashes: true })
|
||||
} catch (error) {
|
||||
assert(error instanceof ValidationError)
|
||||
assert.strictEqual(error.message, expectedError)
|
||||
return
|
||||
}
|
||||
assert(
|
||||
false,
|
||||
`Should throw ValidationError instead of producing hash: ${hash}`,
|
||||
assert.throws(
|
||||
() => computeLedgerHash(ledgerToTest, { computeTreeHashes: true }),
|
||||
ValidationError,
|
||||
expectedError,
|
||||
)
|
||||
}
|
||||
|
||||
const transactions = ledger.transactions
|
||||
delete ledger.transactions
|
||||
testCompute(ledger, 'transactions property is missing from the ledger')
|
||||
delete ledger.rawState
|
||||
testCompute(ledger, 'transactions property is missing from the ledger')
|
||||
testCompute(ledger, 'transactions is missing from the ledger')
|
||||
delete ledger.accountState
|
||||
testCompute(ledger, 'transactions is missing from the ledger')
|
||||
ledger.transactions = transactions
|
||||
testCompute(ledger, 'rawState property is missing from the ledger')
|
||||
testCompute(ledger, 'accountState is missing from the ledger')
|
||||
})
|
||||
|
||||
it('wrong hash', function () {
|
||||
const ledger = JSON.parse(JSON.stringify(responses.getLedger.full))
|
||||
assertResultMatch(ledger, responses.getLedger.full, 'getLedger')
|
||||
const newLedger = {
|
||||
...ledger,
|
||||
parentCloseTime: ledger.closeTime,
|
||||
stateHash:
|
||||
parent_close_time: ledger.close_time,
|
||||
account_hash:
|
||||
'D9ABF622DA26EEEE48203085D4BC23B0F77DC6F8724AC33D975DA3CA492D2E44',
|
||||
}
|
||||
assert.throws(() => {
|
||||
computeLedgerHeaderHash(newLedger)
|
||||
}, /does not match computed hash of state/u)
|
||||
|
||||
assert.throws(
|
||||
() => {
|
||||
computeLedgerHash(newLedger, { computeTreeHashes: true })
|
||||
},
|
||||
ValidationError,
|
||||
'does not match computed hash of state',
|
||||
)
|
||||
})
|
||||
|
||||
it('computeLedgerHash', function () {
|
||||
const header = REQUEST_FIXTURES.header
|
||||
const ledgerHash = computeLedgerHeaderHash(header)
|
||||
const ledgerHash = computeLedgerHash(header)
|
||||
|
||||
assert.strictEqual(
|
||||
ledgerHash,
|
||||
'F4D865D83EB88C1A1911B9E90641919A1314F36E1B099F8E95FE3B7C77BE3349',
|
||||
@@ -119,21 +121,27 @@ describe('computeLedgerHash', function () {
|
||||
const header = {
|
||||
...REQUEST_FIXTURES.header,
|
||||
transactionHash: undefined,
|
||||
rawTransactions: JSON.stringify(REQUEST_FIXTURES.transactions),
|
||||
rawTransactions: REQUEST_FIXTURES.transactions,
|
||||
}
|
||||
const ledgerHash = computeLedgerHeaderHash(header)
|
||||
const ledgerHash = computeLedgerHash(header)
|
||||
assert.strictEqual(
|
||||
ledgerHash,
|
||||
'F4D865D83EB88C1A1911B9E90641919A1314F36E1B099F8E95FE3B7C77BE3349',
|
||||
)
|
||||
})
|
||||
|
||||
it('computeLedgerHash - incorrent transaction_hash', function () {
|
||||
it('computeLedgerHash - incorrect transaction_hash', function () {
|
||||
const header = {
|
||||
...REQUEST_FIXTURES.header,
|
||||
transactionHash:
|
||||
transaction_hash:
|
||||
'325EACC5271322539EEEC2D6A5292471EF1B3E72AE7180533EFC3B8F0AD435C9',
|
||||
transactions: REQUEST_FIXTURES.transactions as any,
|
||||
}
|
||||
assert.throws(() => computeLedgerHeaderHash(header))
|
||||
|
||||
assert.throws(
|
||||
() => computeLedgerHash(header, { computeTreeHashes: true }),
|
||||
ValidationError,
|
||||
'transactionHash in header does not match computed hash of transactions',
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -168,7 +168,6 @@ describe('generateAddress', function () {
|
||||
|
||||
secret: 'sEdSJHS4oiAdz7w2X2ni1gFiqtbJHqE',
|
||||
classicAddress: 'r9zRhGr7b6xPekLvT6wP4qNdWMryaumZS7',
|
||||
address: 'r9zRhGr7b6xPekLvT6wP4qNdWMryaumZS7',
|
||||
})
|
||||
})
|
||||
|
||||
@@ -211,7 +210,6 @@ describe('generateAddress', function () {
|
||||
xAddress: 'T7t4HeTMF5tT68agwuVbJwu23ssMPeh8dDtGysZoQiij1oo',
|
||||
secret: 'sEdSJHS4oiAdz7w2X2ni1gFiqtbJHqE',
|
||||
classicAddress: 'r9zRhGr7b6xPekLvT6wP4qNdWMryaumZS7',
|
||||
address: 'r9zRhGr7b6xPekLvT6wP4qNdWMryaumZS7',
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user