diff --git a/__tests__/integration/core-forger/__fixtures__/block.ts b/__tests__/integration/core-forger/__fixtures__/block.ts index 58780a3a8b..871d131cd5 100644 --- a/__tests__/integration/core-forger/__fixtures__/block.ts +++ b/__tests__/integration/core-forger/__fixtures__/block.ts @@ -1,19 +1,19 @@ import { models } from "@arkecosystem/crypto"; export const sampleBlock = new models.Block({ - id: "4398082439836560423", + id: "7686497416922799951", version: 0, - timestamp: 35751416, - height: 3342573, - previousBlock: "14909996519459393858", + timestamp: 62225384, + height: 1760011, + previousBlock: "1111111111111111111", numberOfTransactions: 0, totalAmount: 0, totalFee: 0, reward: 200000000, payloadLength: 0, payloadHash: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - generatorPublicKey: "03806036bc1bb470144184b10f815431c580ae2b806d5fd0ba2118dca823c5c4a6", + generatorPublicKey: "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", blockSignature: // tslint:disable-next-line:max-line-length - "3045022100d0ad616575b1039b89ae22bb8efbce80dd14f52d193ef7a1d0a76fab0253aa4f02206a347bb5d4dc372e5a7ad3f16ae44409d9190fbd8138e9b4e99f83ca3236f91d", + "304402205b5da8a3cfb28398baaa50e299d735226c4455bdfdf5cb650afb53b0f22a93c60220572c4a4652edcd1bb85720884a7b0732add4dd50e7a0984325807770c99939bd", }); diff --git a/__tests__/integration/core-tester-cli/__fixtures__/block.json b/__tests__/integration/core-tester-cli/__fixtures__/block.json index ec148aa9e2..7c33aa01a1 100644 --- a/__tests__/integration/core-tester-cli/__fixtures__/block.json +++ b/__tests__/integration/core-tester-cli/__fixtures__/block.json @@ -1,140 +1,126 @@ { "data": { - "id": "7176646138626297930", + "id": "17605317082329008056", "version": 0, - "height": 2243161, - "timestamp": 24760440, + "height": 1760000, + "timestamp": 62222080, "previousBlock": "3112633353705641986", "numberOfTransactions": 7, - "totalAmount": "3890300", + "totalAmount": "10500000000", "totalFee": "70000000", "reward": "200000000", "payloadLength": 224, - "payloadHash": "3784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282", - "generatorPublicKey": "020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a325", - "blockSignature": "3045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29", + "payloadHash": "de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db", + "generatorPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "blockSignature": "30450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3", "transactions": [ { + "version": 1, + "network": 30, "type": 0, - "amount": 555760, - "fee": 10000000, - "recipientId": "DB4gFuDztmdGALMb8i1U4Z4R5SktxpNTAY", - "timestamp": 24760418, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "304402204f12469157b19edd06ba25fcad3d4a5ef5b057c23f9e02de4641e6f8eef0553e022010121ab282f83efe1043de9c16bbf2c6845a03684229a0d7c965ffb9abdfb978", - "secondSignature": "30450221008327862f0b9178d6665f7d6674978c5caf749649558d814244b1c66cdf945c40022015918134ef01fed3fe2a2efde3327917731344332724522c75c2799a14f78717", - "id": "170543154a3b79459cbaa529f9f62b6f1342682799eb549dbf09fcca2d1f9c11", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1300000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "30440220714c2627f0e9c3bd6bf13b8b4faa5ec2d677694c27f580e2f9e3875bde9bc36f02201c33faacab9eafd799d9ceecaa153e3b87b4cd04535195261fd366e552652549", + "id": "188b4d9d95a58e4e18d9ce9db28f2010323b90b5afd36a474d7ae7bf70772bb0", + "blockId": "17605317082329008056", + "sequence": 0 }, { + "version": 1, + "network": 30, "type": 0, - "amount": 555750, - "fee": 10000000, - "recipientId": "DGExsNogZR7JFa2656ZFP9TMWJYJh5djzQ", - "timestamp": 24760416, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "304402205f82feb8c5d1d79c565c2ff7badb93e4c9827b132d135dda11cb25427d4ef8ac02205ff136f970533c4ec4c7d0cd1ea7e02d7b62629b66c6c93265f608d7f2389727", - "secondSignature": "304402207e912031fcc700d8a55fbc415993302a0d8e6aea128397141b640b6dba52331702201fd1ad3984e42af44f548907add6cb7ad72ca0070c8cc1d8dc9bbda208c56bd9", - "id": "1da153f37eceda233ff1b407ac18e47b3cae47c14cdcd5297d929618a916c4a7", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1700000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "3045022100e6039f810684515c0d6b31039040a76c98f3624b6454cb156a0a2137e5f8dba7022001ada19bcca5798e1c7cc8cc39bab5d4019525e3d72a42bd2c4129352b8ead87", + "id": "23084f2cc566f6144a8f447bc784de64a0b0646776060482d8550856145e11e2", + "blockId": "17605317082329008056", + "sequence": 1 }, { + "version": 1, + "network": 30, "type": 0, - "amount": 555770, - "fee": 10000000, - "recipientId": "DHGK5np6LuMMErfRfC5CmjpGu3ME85c25n", - "timestamp": 24760420, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "304502210083216e6969e068770e6d2fe5c244881002309df84d20290ddf3f858967ed010202202a479b3da5080ea475d310ff13494654b42db75886a8808bd211b4bdb9146a7a", - "secondSignature": "3045022100e1dcab3406bbeb968146a4a391909ce41df9b71592a753b001e7c2ee1d382c5102202a74aeafd4a152ec61854636fbae829c41f1416c1e0637a0809408394973099f", - "id": "1e255f07dc25ce22d900ea81663c8f00d05a7b7c061e6fc3c731b05d642fa0b9", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1500000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "3045022100c2b5ef772b36e468e95ec2e457bfaba7bad0e13b3faf57e229ff5d67a0e017c902202339664595ea5c70ce20e4dd182532f7fa385d86575b0476ff3eda9f9785e1e9", + "id": "743ce0a590c2af90e4734db3630b52d7a7cbc2bc228d75ae6409c0b6d184bfad", + "blockId": "17605317082329008056", + "sequence": 2 }, { + "version": 1, + "network": 30, "type": 0, - "amount": 555750, - "fee": 10000000, - "recipientId": "D7pcLJNGe197ibmWEmT8mM9KKU1htrcDyW", - "timestamp": 24760417, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "3045022100cd4fa9855227be11e17201419dacfbbd5d9946df8d6792a9488160025693821402207fb83969bad6a26959f437b5bb88e255b0a48eb04964d0c0d29f7ee94bd15e11", - "secondSignature": "304402205f50c2991a17743d17ffbb09159cadc35a3f848044261842879ccf5be9d81c5e022023bf21c32fb6e94494104f15f8d3a942ab120d0abd6fb4c93790b68e1b307a79", - "id": "66336c61d6ec623f8a1d2fd156a0fac16a4fe93bb3fba337859355c2119923a8", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1600000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "30450221009ceb56688705e6b12000bde726ca123d84982231d7434f059612ff5f987409c602200d908667877c902e7ba35024951046b883e0bce9103d4717928d94ecc958884a", + "id": "877780706b62b437913ef4ea30c6e370f8877ef7a5bac58d8cebca83b7e20060", + "blockId": "17605317082329008056", + "sequence": 3 }, { + "version": 1, + "network": 30, "type": 0, - "amount": 555760, - "fee": 10000000, - "recipientId": "DD4yhwzryQdNGqKtezmycToQv63g27Tqqq", - "timestamp": 24760418, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "30450221009c792062e13399ac6756b2e9f137194d06e106360ac0f3e24e55c7249cee0b3602205dc1d9c76d0451d1cb5a2396783a13e6d2d790ccfd49291e3d0a78349f7ea0e8", - "secondSignature": "30440220083ba8a9af49b8be6e93794d71ec43ffc96a158375810e5d9f2478e71655315b0220278402ecaa1d224dab9f0f3b28295bbaea339c85c7400edafdc49df87439fc64", - "id": "78db36f7d79f51c67d7210ee3819dfb8d0d47b16a7484ebf55c5a055b17209a3", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1200000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "30440220464beac6d49943ad8afaac4fdc863c9cd7cf3a84f9938c1d7269ed522298f11a02203581bf180de1966f86d914afeb005e1e818c9213514f96a34e1391c2a08514fa", + "id": "947fe8745eeed8fa6e5ad62a8dad29bcf3d50ce001907926c486460d1cc1f1c0", + "blockId": "17605317082329008056", + "sequence": 4 }, { + "version": 1, + "network": 30, "type": 0, - "amount": 555760, - "fee": 10000000, - "recipientId": "D5LiYGXL5keycWuTF6AFFwSRc6Mt4uEHMu", - "timestamp": 24760419, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "3044022063c65263e42be02bd9831b375c1d76a88332f00ed0557ecc1e7d2375ca40070902206797b5932c0bad68444beb5a38daa7cadf536ee2144e0d9777b812284d14374e", - "secondSignature": "3045022100b04da6692f75d43229ffd8486c1517e8952d38b4c03dfac38b6b360190a5c33e0220776622e5f09f92a1258b4a011f22181c977b622b8d1bbb2f83b42f4126d00739", - "id": "83c80bb58777bb43f5037544b44ef69f191d3548fd1b2a00bed368f9f0d694c5", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1800000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "3045022100c7b40d7134d909762d18d6bfb7ac1c32be0ee8c047020131f499faea70ca0b2b0220117c0cf026f571f5a85e3ae800a6fd595185076ff38e64c7a4bd14f34e1d4dd1", + "id": "98387933d65fabffe2642464d4c7b1ff5fe1fa5a35992f834b0ac145dff462ea", + "blockId": "17605317082329008056", + "sequence": 5 }, { + "version": 1, + "network": 30, "type": 0, - "amount": 555750, - "fee": 10000000, - "recipientId": "DPopNLwMvv4zSjdZnqUk8HFH13Mcb7NbEK", - "timestamp": 24760416, - "asset": {}, - "vendorField": "Goose Voter - True Block Weight", - "senderPublicKey": "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - "signature": "3045022100d4513c3608c2072e38e7a0e3bb8daf2cd5f7cc6fec9a5570dccd1eda696c591902202ecbbf3c9d0757be7b23c8b1cc6481c51600d158756c47fcb6f4a7f4893e31c4", - "secondSignature": "304402201fed4858d0806dd32220960900a871dd2f60e1f623af75feef9b1034a9a0a46402205a29b27c63fcc3e1ee1e77ecbbf4dd6e7db09901e7a09b9fd490cd68d62392cb", - "id": "d2faf992fdd5da96d6d15038b6ddb65230338fa2096e45e44da51daad5e2f3ca", - "senderId": "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - "hop": 2, - "broadcast": false, - "blockId": "7176646138626297930" + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1400000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "304402206a4a8e4e6918fbc15728653b117f51db716aeb04e5ee1de047f80b0476ee4efb02200f486dfaf0def3f3e8636d46ee75a2c07de9714ce4283a25fde9b6218b5e7923", + "id": "e93345dd9a87ac4e84d9bfd892dfbfeb02e546e5bd7822168d0f72c7662e6176", + "blockId": "17605317082329008056", + "sequence": 6 } ] }, - "serialized": "0000000078d07901593a22002b324b8b33a85802070000007c5c3b0000000000801d2c040000000000c2eb0b00000000e00000003784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a3253045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29", - "serializedFull": "0000000078d07901593a22002b324b8b33a85802070000007c5c3b0000000000801d2c040000000000c2eb0b00000000e00000003784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a3253045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29ff000000fe00000000010000ff000000ff000000ff000000ff000000ff011e0062d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e40fad23d21da7a4fd4decb5c49726ea22f5e6bf6304402204f12469157b19edd06ba25fcad3d4a5ef5b057c23f9e02de4641e6f8eef0553e022010121ab282f83efe1043de9c16bbf2c6845a03684229a0d7c965ffb9abdfb97830450221008327862f0b9178d6665f7d6674978c5caf749649558d814244b1c66cdf945c40022015918134ef01fed3fe2a2efde3327917731344332724522c75c2799a14f78717ff011e0060d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001e79c579fb08f448879c22fe965906b4e3b88d02ed304402205f82feb8c5d1d79c565c2ff7badb93e4c9827b132d135dda11cb25427d4ef8ac02205ff136f970533c4ec4c7d0cd1ea7e02d7b62629b66c6c93265f608d7f2389727304402207e912031fcc700d8a55fbc415993302a0d8e6aea128397141b640b6dba52331702201fd1ad3984e42af44f548907add6cb7ad72ca0070c8cc1d8dc9bbda208c56bd9ff011e0064d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874fa7a080000000000000000001e84fee45dde2b11525afe192a2e991d014ff93a36304502210083216e6969e068770e6d2fe5c244881002309df84d20290ddf3f858967ed010202202a479b3da5080ea475d310ff13494654b42db75886a8808bd211b4bdb9146a7a3045022100e1dcab3406bbeb968146a4a391909ce41df9b71592a753b001e7c2ee1d382c5102202a74aeafd4a152ec61854636fbae829c41f1416c1e0637a0809408394973099fff011e0061d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001e1d69583ede5ee82d220e74bffb36bae2ce762dfb3045022100cd4fa9855227be11e17201419dacfbbd5d9946df8d6792a9488160025693821402207fb83969bad6a26959f437b5bb88e255b0a48eb04964d0c0d29f7ee94bd15e11304402205f50c2991a17743d17ffbb09159cadc35a3f848044261842879ccf5be9d81c5e022023bf21c32fb6e94494104f15f8d3a942ab120d0abd6fb4c93790b68e1b307a79ff011e0062d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e56f9a37a859f4f84e93ce7593e809b15a524db2930450221009c792062e13399ac6756b2e9f137194d06e106360ac0f3e24e55c7249cee0b3602205dc1d9c76d0451d1cb5a2396783a13e6d2d790ccfd49291e3d0a78349f7ea0e830440220083ba8a9af49b8be6e93794d71ec43ffc96a158375810e5d9f2478e71655315b0220278402ecaa1d224dab9f0f3b28295bbaea339c85c7400edafdc49df87439fc64ff011e0063d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e0232a083c16aba4362dddec1b3050ffdd6d43f2e3044022063c65263e42be02bd9831b375c1d76a88332f00ed0557ecc1e7d2375ca40070902206797b5932c0bad68444beb5a38daa7cadf536ee2144e0d9777b812284d14374e3045022100b04da6692f75d43229ffd8486c1517e8952d38b4c03dfac38b6b360190a5c33e0220776622e5f09f92a1258b4a011f22181c977b622b8d1bbb2f83b42f4126d00739ff011e0060d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001eccc4fce0dc95f9951ee40c09a7ae807746cf51403045022100d4513c3608c2072e38e7a0e3bb8daf2cd5f7cc6fec9a5570dccd1eda696c591902202ecbbf3c9d0757be7b23c8b1cc6481c51600d158756c47fcb6f4a7f4893e31c4304402201fed4858d0806dd32220960900a871dd2f60e1f623af75feef9b1034a9a0a46402205a29b27c63fcc3e1ee1e77ecbbf4dd6e7db09901e7a09b9fd490cd68d62392cb" + "serialized": "00000000006fb50300db1a002b324b8b33a85802070000000049d97102000000801d2c040000000000c2eb0b00000000e0000000de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3730450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3", + "serializedFull": "00000000006fb50300db1a002b324b8b33a85802070000000049d97102000000801d2c040000000000c2eb0b00000000e0000000de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3730450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3990000009a0000009a0000009a000000990000009a00000099000000ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000006d7c4d00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530440220714c2627f0e9c3bd6bf13b8b4faa5ec2d677694c27f580e2f9e3875bde9bc36f02201c33faacab9eafd799d9ceecaa153e3b87b4cd04535195261fd366e552652549ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000f1536500000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100e6039f810684515c0d6b31039040a76c98f3624b6454cb156a0a2137e5f8dba7022001ada19bcca5798e1c7cc8cc39bab5d4019525e3d72a42bd2c4129352b8ead87ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000002f685900000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100c2b5ef772b36e468e95ec2e457bfaba7bad0e13b3faf57e229ff5d67a0e017c902202339664595ea5c70ce20e4dd182532f7fa385d86575b0476ff3eda9f9785e1e9ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000105e5f00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530450221009ceb56688705e6b12000bde726ca123d84982231d7434f059612ff5f987409c602200d908667877c902e7ba35024951046b883e0bce9103d4717928d94ecc958884aff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000008c864700000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530440220464beac6d49943ad8afaac4fdc863c9cd7cf3a84f9938c1d7269ed522298f11a02203581bf180de1966f86d914afeb005e1e818c9213514f96a34e1391c2a08514faff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000d2496b00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100c7b40d7134d909762d18d6bfb7ac1c32be0ee8c047020131f499faea70ca0b2b0220117c0cf026f571f5a85e3ae800a6fd595185076ff38e64c7a4bd14f34e1d4dd1ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000004e725300000000000000001e46550551e12d2531ea9d2968696b75f68ae7f295304402206a4a8e4e6918fbc15728653b117f51db716aeb04e5ee1de047f80b0476ee4efb02200f486dfaf0def3f3e8636d46ee75a2c07de9714ce4283a25fde9b6218b5e7923" } diff --git a/__tests__/unit/core-forger/__fixtures__/block.ts b/__tests__/unit/core-forger/__fixtures__/block.ts index 58780a3a8b..2df42e9c66 100644 --- a/__tests__/unit/core-forger/__fixtures__/block.ts +++ b/__tests__/unit/core-forger/__fixtures__/block.ts @@ -1,4 +1,6 @@ -import { models } from "@arkecosystem/crypto"; +import { client, models } from "@arkecosystem/crypto"; + +client.getConfigManager().setFromPreset("unitnet"); export const sampleBlock = new models.Block({ id: "4398082439836560423", diff --git a/__tests__/unit/crypto/fixtures/block.ts b/__tests__/unit/crypto/fixtures/block.ts index fb8b168d60..049e475c82 100644 --- a/__tests__/unit/crypto/fixtures/block.ts +++ b/__tests__/unit/crypto/fixtures/block.ts @@ -1,311 +1,132 @@ export const dummyBlock = { - id: "7176646138626297930", - version: 0, - height: 2243161, - timestamp: 24760440, - previousBlock: "3112633353705641986", - numberOfTransactions: 7, - totalAmount: "3890300", - totalFee: "70000000", - reward: "200000000", - payloadLength: 224, - payloadHash: "3784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282", - generatorPublicKey: "020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a325", - blockSignature: - "3045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29", - transactions: [ + "id": "17605317082329008056", + "version": 0, + "height": 1760000, + "timestamp": 62222080, + "previousBlock": "3112633353705641986", + "numberOfTransactions": 7, + "totalAmount": "10500000000", + "totalFee": "70000000", + "reward": "200000000", + "payloadLength": 224, + "payloadHash": "de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db", + "generatorPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "blockSignature": "30450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3", + "transactions": [ { - type: 0, - amount: 555760, - fee: 10000000, - recipientId: "DB4gFuDztmdGALMb8i1U4Z4R5SktxpNTAY", - timestamp: 24760418, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "304402204f12469157b19edd06ba25fcad3d4a5ef5b057c23f9e02de4641e6f8eef0553e022010121ab282f83efe1043de9c16bbf2c6845a03684229a0d7c965ffb9abdfb978", - secondSignature: - "30450221008327862f0b9178d6665f7d6674978c5caf749649558d814244b1c66cdf945c40022015918134ef01fed3fe2a2efde3327917731344332724522c75c2799a14f78717", - id: "170543154a3b79459cbaa529f9f62b6f1342682799eb549dbf09fcca2d1f9c11", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1300000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "30440220714c2627f0e9c3bd6bf13b8b4faa5ec2d677694c27f580e2f9e3875bde9bc36f02201c33faacab9eafd799d9ceecaa153e3b87b4cd04535195261fd366e552652549", + "id": "188b4d9d95a58e4e18d9ce9db28f2010323b90b5afd36a474d7ae7bf70772bb0", + "blockId": "17605317082329008056", + "sequence": 0 }, { - type: 0, - amount: 555750, - fee: 10000000, - recipientId: "DGExsNogZR7JFa2656ZFP9TMWJYJh5djzQ", - timestamp: 24760416, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "304402205f82feb8c5d1d79c565c2ff7badb93e4c9827b132d135dda11cb25427d4ef8ac02205ff136f970533c4ec4c7d0cd1ea7e02d7b62629b66c6c93265f608d7f2389727", - secondSignature: - "304402207e912031fcc700d8a55fbc415993302a0d8e6aea128397141b640b6dba52331702201fd1ad3984e42af44f548907add6cb7ad72ca0070c8cc1d8dc9bbda208c56bd9", - id: "1da153f37eceda233ff1b407ac18e47b3cae47c14cdcd5297d929618a916c4a7", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1700000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "3045022100e6039f810684515c0d6b31039040a76c98f3624b6454cb156a0a2137e5f8dba7022001ada19bcca5798e1c7cc8cc39bab5d4019525e3d72a42bd2c4129352b8ead87", + "id": "23084f2cc566f6144a8f447bc784de64a0b0646776060482d8550856145e11e2", + "blockId": "17605317082329008056", + "sequence": 1 }, { - type: 0, - amount: 555770, - fee: 10000000, - recipientId: "DHGK5np6LuMMErfRfC5CmjpGu3ME85c25n", - timestamp: 24760420, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "304502210083216e6969e068770e6d2fe5c244881002309df84d20290ddf3f858967ed010202202a479b3da5080ea475d310ff13494654b42db75886a8808bd211b4bdb9146a7a", - secondSignature: - "3045022100e1dcab3406bbeb968146a4a391909ce41df9b71592a753b001e7c2ee1d382c5102202a74aeafd4a152ec61854636fbae829c41f1416c1e0637a0809408394973099f", - id: "1e255f07dc25ce22d900ea81663c8f00d05a7b7c061e6fc3c731b05d642fa0b9", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1500000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "3045022100c2b5ef772b36e468e95ec2e457bfaba7bad0e13b3faf57e229ff5d67a0e017c902202339664595ea5c70ce20e4dd182532f7fa385d86575b0476ff3eda9f9785e1e9", + "id": "743ce0a590c2af90e4734db3630b52d7a7cbc2bc228d75ae6409c0b6d184bfad", + "blockId": "17605317082329008056", + "sequence": 2 }, { - type: 0, - amount: 555750, - fee: 10000000, - recipientId: "D7pcLJNGe197ibmWEmT8mM9KKU1htrcDyW", - timestamp: 24760417, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "3045022100cd4fa9855227be11e17201419dacfbbd5d9946df8d6792a9488160025693821402207fb83969bad6a26959f437b5bb88e255b0a48eb04964d0c0d29f7ee94bd15e11", - secondSignature: - "304402205f50c2991a17743d17ffbb09159cadc35a3f848044261842879ccf5be9d81c5e022023bf21c32fb6e94494104f15f8d3a942ab120d0abd6fb4c93790b68e1b307a79", - id: "66336c61d6ec623f8a1d2fd156a0fac16a4fe93bb3fba337859355c2119923a8", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1600000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "30450221009ceb56688705e6b12000bde726ca123d84982231d7434f059612ff5f987409c602200d908667877c902e7ba35024951046b883e0bce9103d4717928d94ecc958884a", + "id": "877780706b62b437913ef4ea30c6e370f8877ef7a5bac58d8cebca83b7e20060", + "blockId": "17605317082329008056", + "sequence": 3 }, { - type: 0, - amount: 555760, - fee: 10000000, - recipientId: "DD4yhwzryQdNGqKtezmycToQv63g27Tqqq", - timestamp: 24760418, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "30450221009c792062e13399ac6756b2e9f137194d06e106360ac0f3e24e55c7249cee0b3602205dc1d9c76d0451d1cb5a2396783a13e6d2d790ccfd49291e3d0a78349f7ea0e8", - secondSignature: - "30440220083ba8a9af49b8be6e93794d71ec43ffc96a158375810e5d9f2478e71655315b0220278402ecaa1d224dab9f0f3b28295bbaea339c85c7400edafdc49df87439fc64", - id: "78db36f7d79f51c67d7210ee3819dfb8d0d47b16a7484ebf55c5a055b17209a3", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1200000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "30440220464beac6d49943ad8afaac4fdc863c9cd7cf3a84f9938c1d7269ed522298f11a02203581bf180de1966f86d914afeb005e1e818c9213514f96a34e1391c2a08514fa", + "id": "947fe8745eeed8fa6e5ad62a8dad29bcf3d50ce001907926c486460d1cc1f1c0", + "blockId": "17605317082329008056", + "sequence": 4 }, { - type: 0, - amount: 555760, - fee: 10000000, - recipientId: "D5LiYGXL5keycWuTF6AFFwSRc6Mt4uEHMu", - timestamp: 24760419, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "3044022063c65263e42be02bd9831b375c1d76a88332f00ed0557ecc1e7d2375ca40070902206797b5932c0bad68444beb5a38daa7cadf536ee2144e0d9777b812284d14374e", - secondSignature: - "3045022100b04da6692f75d43229ffd8486c1517e8952d38b4c03dfac38b6b360190a5c33e0220776622e5f09f92a1258b4a011f22181c977b622b8d1bbb2f83b42f4126d00739", - id: "83c80bb58777bb43f5037544b44ef69f191d3548fd1b2a00bed368f9f0d694c5", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1800000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "3045022100c7b40d7134d909762d18d6bfb7ac1c32be0ee8c047020131f499faea70ca0b2b0220117c0cf026f571f5a85e3ae800a6fd595185076ff38e64c7a4bd14f34e1d4dd1", + "id": "98387933d65fabffe2642464d4c7b1ff5fe1fa5a35992f834b0ac145dff462ea", + "blockId": "17605317082329008056", + "sequence": 5 }, { - type: 0, - amount: 555750, - fee: 10000000, - recipientId: "DPopNLwMvv4zSjdZnqUk8HFH13Mcb7NbEK", - timestamp: 24760416, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "3045022100d4513c3608c2072e38e7a0e3bb8daf2cd5f7cc6fec9a5570dccd1eda696c591902202ecbbf3c9d0757be7b23c8b1cc6481c51600d158756c47fcb6f4a7f4893e31c4", - secondSignature: - "304402201fed4858d0806dd32220960900a871dd2f60e1f623af75feef9b1034a9a0a46402205a29b27c63fcc3e1ee1e77ecbbf4dd6e7db09901e7a09b9fd490cd68d62392cb", - id: "d2faf992fdd5da96d6d15038b6ddb65230338fa2096e45e44da51daad5e2f3ca", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - ], + "version": 1, + "network": 30, + "type": 0, + "timestamp": 62222080, + "senderPublicKey": "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37", + "fee": "10000000", + "amount": "1400000000", + "expiration": 0, + "recipientId": "DBYyh2vXcigrJGUHfvmYxVxEqeH7vomw6x", + "signature": "304402206a4a8e4e6918fbc15728653b117f51db716aeb04e5ee1de047f80b0476ee4efb02200f486dfaf0def3f3e8636d46ee75a2c07de9714ce4283a25fde9b6218b5e7923", + "id": "e93345dd9a87ac4e84d9bfd892dfbfeb02e546e5bd7822168d0f72c7662e6176", + "blockId": "17605317082329008056", + "sequence": 6 + } + ] }; export const dummyBlock2 = { - data: { - id: "7176646138626297930", - version: 0, - height: 2243161, - timestamp: 24760440, - previousBlock: "3112633353705641986", - numberOfTransactions: 7, - totalAmount: "3890300", - totalFee: "70000000", - reward: "200000000", - payloadLength: 224, - payloadHash: "3784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282", - generatorPublicKey: "020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a325", - blockSignature: - "3045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29", - transactions: [ - { - type: 0, - amount: 555760, - fee: 10000000, - recipientId: "DB4gFuDztmdGALMb8i1U4Z4R5SktxpNTAY", - timestamp: 24760418, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "304402204f12469157b19edd06ba25fcad3d4a5ef5b057c23f9e02de4641e6f8eef0553e022010121ab282f83efe1043de9c16bbf2c6845a03684229a0d7c965ffb9abdfb978", - secondSignature: - "30450221008327862f0b9178d6665f7d6674978c5caf749649558d814244b1c66cdf945c40022015918134ef01fed3fe2a2efde3327917731344332724522c75c2799a14f78717", - id: "170543154a3b79459cbaa529f9f62b6f1342682799eb549dbf09fcca2d1f9c11", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - { - type: 0, - amount: 555750, - fee: 10000000, - recipientId: "DGExsNogZR7JFa2656ZFP9TMWJYJh5djzQ", - timestamp: 24760416, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "304402205f82feb8c5d1d79c565c2ff7badb93e4c9827b132d135dda11cb25427d4ef8ac02205ff136f970533c4ec4c7d0cd1ea7e02d7b62629b66c6c93265f608d7f2389727", - secondSignature: - "304402207e912031fcc700d8a55fbc415993302a0d8e6aea128397141b640b6dba52331702201fd1ad3984e42af44f548907add6cb7ad72ca0070c8cc1d8dc9bbda208c56bd9", - id: "1da153f37eceda233ff1b407ac18e47b3cae47c14cdcd5297d929618a916c4a7", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - { - type: 0, - amount: 555770, - fee: 10000000, - recipientId: "DHGK5np6LuMMErfRfC5CmjpGu3ME85c25n", - timestamp: 24760420, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "304502210083216e6969e068770e6d2fe5c244881002309df84d20290ddf3f858967ed010202202a479b3da5080ea475d310ff13494654b42db75886a8808bd211b4bdb9146a7a", - secondSignature: - "3045022100e1dcab3406bbeb968146a4a391909ce41df9b71592a753b001e7c2ee1d382c5102202a74aeafd4a152ec61854636fbae829c41f1416c1e0637a0809408394973099f", - id: "1e255f07dc25ce22d900ea81663c8f00d05a7b7c061e6fc3c731b05d642fa0b9", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - { - type: 0, - amount: 555750, - fee: 10000000, - recipientId: "D7pcLJNGe197ibmWEmT8mM9KKU1htrcDyW", - timestamp: 24760417, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "3045022100cd4fa9855227be11e17201419dacfbbd5d9946df8d6792a9488160025693821402207fb83969bad6a26959f437b5bb88e255b0a48eb04964d0c0d29f7ee94bd15e11", - secondSignature: - "304402205f50c2991a17743d17ffbb09159cadc35a3f848044261842879ccf5be9d81c5e022023bf21c32fb6e94494104f15f8d3a942ab120d0abd6fb4c93790b68e1b307a79", - id: "66336c61d6ec623f8a1d2fd156a0fac16a4fe93bb3fba337859355c2119923a8", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - { - type: 0, - amount: 555760, - fee: 10000000, - recipientId: "DD4yhwzryQdNGqKtezmycToQv63g27Tqqq", - timestamp: 24760418, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "30450221009c792062e13399ac6756b2e9f137194d06e106360ac0f3e24e55c7249cee0b3602205dc1d9c76d0451d1cb5a2396783a13e6d2d790ccfd49291e3d0a78349f7ea0e8", - secondSignature: - "30440220083ba8a9af49b8be6e93794d71ec43ffc96a158375810e5d9f2478e71655315b0220278402ecaa1d224dab9f0f3b28295bbaea339c85c7400edafdc49df87439fc64", - id: "78db36f7d79f51c67d7210ee3819dfb8d0d47b16a7484ebf55c5a055b17209a3", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - { - type: 0, - amount: 555760, - fee: 10000000, - recipientId: "D5LiYGXL5keycWuTF6AFFwSRc6Mt4uEHMu", - timestamp: 24760419, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "3044022063c65263e42be02bd9831b375c1d76a88332f00ed0557ecc1e7d2375ca40070902206797b5932c0bad68444beb5a38daa7cadf536ee2144e0d9777b812284d14374e", - secondSignature: - "3045022100b04da6692f75d43229ffd8486c1517e8952d38b4c03dfac38b6b360190a5c33e0220776622e5f09f92a1258b4a011f22181c977b622b8d1bbb2f83b42f4126d00739", - id: "83c80bb58777bb43f5037544b44ef69f191d3548fd1b2a00bed368f9f0d694c5", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - { - type: 0, - amount: 555750, - fee: 10000000, - recipientId: "DPopNLwMvv4zSjdZnqUk8HFH13Mcb7NbEK", - timestamp: 24760416, - asset: {}, - vendorField: "Goose Voter - True Block Weight", - senderPublicKey: "0265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c0", - signature: - "3045022100d4513c3608c2072e38e7a0e3bb8daf2cd5f7cc6fec9a5570dccd1eda696c591902202ecbbf3c9d0757be7b23c8b1cc6481c51600d158756c47fcb6f4a7f4893e31c4", - secondSignature: - "304402201fed4858d0806dd32220960900a871dd2f60e1f623af75feef9b1034a9a0a46402205a29b27c63fcc3e1ee1e77ecbbf4dd6e7db09901e7a09b9fd490cd68d62392cb", - id: "d2faf992fdd5da96d6d15038b6ddb65230338fa2096e45e44da51daad5e2f3ca", - senderId: "DB8LnnQqYvHpG4WkGJ9AJWBYEct7G3yRZg", - hop: 2, - broadcast: false, - blockId: "7176646138626297930", - }, - ], - }, + data: dummyBlock, serialized: - "0000000078d07901593a22002b324b8b33a85802070000007c5c3b0000000000801d2c040000000000c2eb0b00000000e00000003784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a3253045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29", + "00000000006fb50300db1a002b324b8b33a85802070000000049d97102000000801d2c040000000000c2eb0b00000000e0000000de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3730450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3", serializedFull: - "0000000078d07901593a22002b324b8b33a85802070000007c5c3b0000000000801d2c040000000000c2eb0b00000000e00000003784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a3253045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29ff000000fe00000000010000ff000000ff000000ff000000ff000000ff011e0062d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e40fad23d21da7a4fd4decb5c49726ea22f5e6bf6304402204f12469157b19edd06ba25fcad3d4a5ef5b057c23f9e02de4641e6f8eef0553e022010121ab282f83efe1043de9c16bbf2c6845a03684229a0d7c965ffb9abdfb97830450221008327862f0b9178d6665f7d6674978c5caf749649558d814244b1c66cdf945c40022015918134ef01fed3fe2a2efde3327917731344332724522c75c2799a14f78717ff011e0060d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001e79c579fb08f448879c22fe965906b4e3b88d02ed304402205f82feb8c5d1d79c565c2ff7badb93e4c9827b132d135dda11cb25427d4ef8ac02205ff136f970533c4ec4c7d0cd1ea7e02d7b62629b66c6c93265f608d7f2389727304402207e912031fcc700d8a55fbc415993302a0d8e6aea128397141b640b6dba52331702201fd1ad3984e42af44f548907add6cb7ad72ca0070c8cc1d8dc9bbda208c56bd9ff011e0064d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874fa7a080000000000000000001e84fee45dde2b11525afe192a2e991d014ff93a36304502210083216e6969e068770e6d2fe5c244881002309df84d20290ddf3f858967ed010202202a479b3da5080ea475d310ff13494654b42db75886a8808bd211b4bdb9146a7a3045022100e1dcab3406bbeb968146a4a391909ce41df9b71592a753b001e7c2ee1d382c5102202a74aeafd4a152ec61854636fbae829c41f1416c1e0637a0809408394973099fff011e0061d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001e1d69583ede5ee82d220e74bffb36bae2ce762dfb3045022100cd4fa9855227be11e17201419dacfbbd5d9946df8d6792a9488160025693821402207fb83969bad6a26959f437b5bb88e255b0a48eb04964d0c0d29f7ee94bd15e11304402205f50c2991a17743d17ffbb09159cadc35a3f848044261842879ccf5be9d81c5e022023bf21c32fb6e94494104f15f8d3a942ab120d0abd6fb4c93790b68e1b307a79ff011e0062d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e56f9a37a859f4f84e93ce7593e809b15a524db2930450221009c792062e13399ac6756b2e9f137194d06e106360ac0f3e24e55c7249cee0b3602205dc1d9c76d0451d1cb5a2396783a13e6d2d790ccfd49291e3d0a78349f7ea0e830440220083ba8a9af49b8be6e93794d71ec43ffc96a158375810e5d9f2478e71655315b0220278402ecaa1d224dab9f0f3b28295bbaea339c85c7400edafdc49df87439fc64ff011e0063d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e0232a083c16aba4362dddec1b3050ffdd6d43f2e3044022063c65263e42be02bd9831b375c1d76a88332f00ed0557ecc1e7d2375ca40070902206797b5932c0bad68444beb5a38daa7cadf536ee2144e0d9777b812284d14374e3045022100b04da6692f75d43229ffd8486c1517e8952d38b4c03dfac38b6b360190a5c33e0220776622e5f09f92a1258b4a011f22181c977b622b8d1bbb2f83b42f4126d00739ff011e0060d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001eccc4fce0dc95f9951ee40c09a7ae807746cf51403045022100d4513c3608c2072e38e7a0e3bb8daf2cd5f7cc6fec9a5570dccd1eda696c591902202ecbbf3c9d0757be7b23c8b1cc6481c51600d158756c47fcb6f4a7f4893e31c4304402201fed4858d0806dd32220960900a871dd2f60e1f623af75feef9b1034a9a0a46402205a29b27c63fcc3e1ee1e77ecbbf4dd6e7db09901e7a09b9fd490cd68d62392cb", + "00000000006fb50300db1a002b324b8b33a85802070000000049d97102000000801d2c040000000000c2eb0b00000000e0000000de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3730450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3990000009a0000009a0000009a000000990000009a00000099000000ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000006d7c4d00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530440220714c2627f0e9c3bd6bf13b8b4faa5ec2d677694c27f580e2f9e3875bde9bc36f02201c33faacab9eafd799d9ceecaa153e3b87b4cd04535195261fd366e552652549ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000f1536500000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100e6039f810684515c0d6b31039040a76c98f3624b6454cb156a0a2137e5f8dba7022001ada19bcca5798e1c7cc8cc39bab5d4019525e3d72a42bd2c4129352b8ead87ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000002f685900000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100c2b5ef772b36e468e95ec2e457bfaba7bad0e13b3faf57e229ff5d67a0e017c902202339664595ea5c70ce20e4dd182532f7fa385d86575b0476ff3eda9f9785e1e9ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000105e5f00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530450221009ceb56688705e6b12000bde726ca123d84982231d7434f059612ff5f987409c602200d908667877c902e7ba35024951046b883e0bce9103d4717928d94ecc958884aff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000008c864700000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530440220464beac6d49943ad8afaac4fdc863c9cd7cf3a84f9938c1d7269ed522298f11a02203581bf180de1966f86d914afeb005e1e818c9213514f96a34e1391c2a08514faff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000d2496b00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100c7b40d7134d909762d18d6bfb7ac1c32be0ee8c047020131f499faea70ca0b2b0220117c0cf026f571f5a85e3ae800a6fd595185076ff38e64c7a4bd14f34e1d4dd1ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000004e725300000000000000001e46550551e12d2531ea9d2968696b75f68ae7f295304402206a4a8e4e6918fbc15728653b117f51db716aeb04e5ee1de047f80b0476ee4efb02200f486dfaf0def3f3e8636d46ee75a2c07de9714ce4283a25fde9b6218b5e7923", }; export const dummyBlock3 = { diff --git a/__tests__/unit/crypto/models/block.test.ts b/__tests__/unit/crypto/models/block.test.ts index 86f88ddc14..33caa2f63e 100644 --- a/__tests__/unit/crypto/models/block.test.ts +++ b/__tests__/unit/crypto/models/block.test.ts @@ -354,14 +354,6 @@ describe("Models - Block", () => { }); }); - describe("getIdFromSerialized", () => { - it("should get the id from serialized buffer", () => { - const serialized = Block.serialize(data); - - expect(Block.getIdFromSerialized(serialized)).toBe(data.id); - }); - }); - describe("serializeFull", () => { describe("genesis block", () => { describe.each([["mainnet", 468048], ["devnet", 14492], ["testnet", 46488]])( @@ -383,7 +375,7 @@ describe("Models - Block", () => { // @ts-ignore const s = Block.serializeFull(dummyBlock).toString("hex"); const serialized = - "0000000078d07901593a22002b324b8b33a85802070000007c5c3b0000000000801d2c040000000000c2eb0b00000000e00000003784b953afcf936bdffd43fdf005b5732b49c1fc6b11e195c364c20b2eb06282020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a3253045022100eee6c37b5e592e99811d588532726353592923f347c701d52912e6d583443e400220277ffe38ad31e216ba0907c4738fed19b2071246b150c72c0a52bae4477ebe29ff000000fe00000000010000ff000000ff000000ff000000ff000000ff011e0062d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e40fad23d21da7a4fd4decb5c49726ea22f5e6bf6304402204f12469157b19edd06ba25fcad3d4a5ef5b057c23f9e02de4641e6f8eef0553e022010121ab282f83efe1043de9c16bbf2c6845a03684229a0d7c965ffb9abdfb97830450221008327862f0b9178d6665f7d6674978c5caf749649558d814244b1c66cdf945c40022015918134ef01fed3fe2a2efde3327917731344332724522c75c2799a14f78717ff011e0060d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001e79c579fb08f448879c22fe965906b4e3b88d02ed304402205f82feb8c5d1d79c565c2ff7badb93e4c9827b132d135dda11cb25427d4ef8ac02205ff136f970533c4ec4c7d0cd1ea7e02d7b62629b66c6c93265f608d7f2389727304402207e912031fcc700d8a55fbc415993302a0d8e6aea128397141b640b6dba52331702201fd1ad3984e42af44f548907add6cb7ad72ca0070c8cc1d8dc9bbda208c56bd9ff011e0064d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874fa7a080000000000000000001e84fee45dde2b11525afe192a2e991d014ff93a36304502210083216e6969e068770e6d2fe5c244881002309df84d20290ddf3f858967ed010202202a479b3da5080ea475d310ff13494654b42db75886a8808bd211b4bdb9146a7a3045022100e1dcab3406bbeb968146a4a391909ce41df9b71592a753b001e7c2ee1d382c5102202a74aeafd4a152ec61854636fbae829c41f1416c1e0637a0809408394973099fff011e0061d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001e1d69583ede5ee82d220e74bffb36bae2ce762dfb3045022100cd4fa9855227be11e17201419dacfbbd5d9946df8d6792a9488160025693821402207fb83969bad6a26959f437b5bb88e255b0a48eb04964d0c0d29f7ee94bd15e11304402205f50c2991a17743d17ffbb09159cadc35a3f848044261842879ccf5be9d81c5e022023bf21c32fb6e94494104f15f8d3a942ab120d0abd6fb4c93790b68e1b307a79ff011e0062d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e56f9a37a859f4f84e93ce7593e809b15a524db2930450221009c792062e13399ac6756b2e9f137194d06e106360ac0f3e24e55c7249cee0b3602205dc1d9c76d0451d1cb5a2396783a13e6d2d790ccfd49291e3d0a78349f7ea0e830440220083ba8a9af49b8be6e93794d71ec43ffc96a158375810e5d9f2478e71655315b0220278402ecaa1d224dab9f0f3b28295bbaea339c85c7400edafdc49df87439fc64ff011e0063d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874f07a080000000000000000001e0232a083c16aba4362dddec1b3050ffdd6d43f2e3044022063c65263e42be02bd9831b375c1d76a88332f00ed0557ecc1e7d2375ca40070902206797b5932c0bad68444beb5a38daa7cadf536ee2144e0d9777b812284d14374e3045022100b04da6692f75d43229ffd8486c1517e8952d38b4c03dfac38b6b360190a5c33e0220776622e5f09f92a1258b4a011f22181c977b622b8d1bbb2f83b42f4126d00739ff011e0060d079010265c1f6b8c1966a90f3fed7bc32fd4f42238ab4938fdb2a4e7ddd01ae8b58b4c080969800000000001f476f6f736520566f746572202d205472756520426c6f636b20576569676874e67a080000000000000000001eccc4fce0dc95f9951ee40c09a7ae807746cf51403045022100d4513c3608c2072e38e7a0e3bb8daf2cd5f7cc6fec9a5570dccd1eda696c591902202ecbbf3c9d0757be7b23c8b1cc6481c51600d158756c47fcb6f4a7f4893e31c4304402201fed4858d0806dd32220960900a871dd2f60e1f623af75feef9b1034a9a0a46402205a29b27c63fcc3e1ee1e77ecbbf4dd6e7db09901e7a09b9fd490cd68d62392cb"; + "00000000006fb50300db1a002b324b8b33a85802070000000049d97102000000801d2c040000000000c2eb0b00000000e0000000de56269cae3ab156f6979b94a04c30b82ed7d6f9a97d162583c98215c18c65db03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3730450221008c59bd2379061ad3539b73284fc0bbb57dbc97efd54f55010ba3f198c04dde7402202e482126b3084c6313c1378d686df92a3e2ef5581323de11e74fe07eeab339f3990000009a0000009a0000009a000000990000009a00000099000000ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000006d7c4d00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530440220714c2627f0e9c3bd6bf13b8b4faa5ec2d677694c27f580e2f9e3875bde9bc36f02201c33faacab9eafd799d9ceecaa153e3b87b4cd04535195261fd366e552652549ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000f1536500000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100e6039f810684515c0d6b31039040a76c98f3624b6454cb156a0a2137e5f8dba7022001ada19bcca5798e1c7cc8cc39bab5d4019525e3d72a42bd2c4129352b8ead87ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000002f685900000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100c2b5ef772b36e468e95ec2e457bfaba7bad0e13b3faf57e229ff5d67a0e017c902202339664595ea5c70ce20e4dd182532f7fa385d86575b0476ff3eda9f9785e1e9ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000105e5f00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530450221009ceb56688705e6b12000bde726ca123d84982231d7434f059612ff5f987409c602200d908667877c902e7ba35024951046b883e0bce9103d4717928d94ecc958884aff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000008c864700000000000000001e46550551e12d2531ea9d2968696b75f68ae7f29530440220464beac6d49943ad8afaac4fdc863c9cd7cf3a84f9938c1d7269ed522298f11a02203581bf180de1966f86d914afeb005e1e818c9213514f96a34e1391c2a08514faff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac3780969800000000000000d2496b00000000000000001e46550551e12d2531ea9d2968696b75f68ae7f2953045022100c7b40d7134d909762d18d6bfb7ac1c32be0ee8c047020131f499faea70ca0b2b0220117c0cf026f571f5a85e3ae800a6fd595185076ff38e64c7a4bd14f34e1d4dd1ff011e00006fb50303287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37809698000000000000004e725300000000000000001e46550551e12d2531ea9d2968696b75f68ae7f295304402206a4a8e4e6918fbc15728653b117f51db716aeb04e5ee1de047f80b0476ee4efb02200f486dfaf0def3f3e8636d46ee75a2c07de9714ce4283a25fde9b6218b5e7923"; const block1 = new Block(dummyBlock); const block2 = new Block(Block.deserialize(serialized)); diff --git a/__tests__/unit/crypto/transactions/deserializers/block.test.ts b/__tests__/unit/crypto/transactions/deserializers/block.test.ts index 7854878b8f..76963a48b9 100644 --- a/__tests__/unit/crypto/transactions/deserializers/block.test.ts +++ b/__tests__/unit/crypto/transactions/deserializers/block.test.ts @@ -50,7 +50,6 @@ describe("block deserializer", () => { "fee", "amount", "recipientId", - "vendorField", "signature", ]; deserialized.transactions.forEach(tx => { diff --git a/__tests__/unit/crypto/validation/ajv-wrapper.test.ts b/__tests__/unit/crypto/validation/ajv-wrapper.test.ts index 2de2c4711b..ad428b01f4 100644 --- a/__tests__/unit/crypto/validation/ajv-wrapper.test.ts +++ b/__tests__/unit/crypto/validation/ajv-wrapper.test.ts @@ -86,23 +86,6 @@ describe("AjvWrapper", () => { }); }); - describe("numericString", () => { - it("should be ok", () => { - expect(AjvWrapper.validate("numericString", "1234").error).toBeNull(); - }); - - it("should not be ok", () => { - expect(AjvWrapper.validate("numericString", "+12").error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", ".1").error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", "1.0").error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", "€").error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", 1).error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", "").error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", null).error).not.toBeNull(); - expect(AjvWrapper.validate("numericString", undefined).error).not.toBeNull(); - }); - }); - describe("alphanumeric", () => { it("should be ok", () => { expect(AjvWrapper.validate("alphanumeric", "abcDE1234").error).toBeNull(); diff --git a/__tests__/unit/crypto/validation/keywords.test.ts b/__tests__/unit/crypto/validation/keywords.test.ts index c9670ce4c9..cd07b7f5b9 100644 --- a/__tests__/unit/crypto/validation/keywords.test.ts +++ b/__tests__/unit/crypto/validation/keywords.test.ts @@ -67,11 +67,18 @@ describe("keyword blockId", () => { const schema = { blockId: {} }; const validate = ajv.compile(schema); - expect(validate("15654541800058894516")).toBeTrue(); + expect(validate("1")).toBeTrue(); expect(validate("1234")).toBeTrue(); expect(validate("15654541800058894516")).toBeTrue(); - expect(validate("AFFE")).toBeTrue(); - expect(validate("94c220691e711c39c79d437ce185748a0018940e1a4144293af9d05627d2eb4")).toBeTrue(); + expect(validate("156545418000588945160")).toBeFalse(); + + expect(validate("e3b0c44298fc1c14")).toBeTrue(); + expect(validate("e3b0c44298fc1c1")).toBeFalse(); + expect(validate("e3b0c44298fc1c140")).toBeFalse(); + + expect(validate("94c220691e711c39c79d437ce185748a0018940e1a4144293af9d05627d2eb40")).toBeTrue(); + expect(validate("94c220691e711c39c79d437ce185748a0018940e1a4144293af9d05627d2eb4")).toBeFalse(); + expect(validate("94c220691e711c39c79d437ce185748a0018940e1a4144293af9d05627d2eb400")).toBeFalse(); }); it("should not be ok", () => { diff --git a/packages/core-api/src/versions/2/blocks/schema.ts b/packages/core-api/src/versions/2/blocks/schema.ts index d8f70e1098..50759691e9 100644 --- a/packages/core-api/src/versions/2/blocks/schema.ts +++ b/packages/core-api/src/versions/2/blocks/schema.ts @@ -1,4 +1,5 @@ import * as Joi from "joi"; +import { blockId } from "../shared/schemas/block-id"; import { pagination } from "../shared/schemas/pagination"; export const index: object = { @@ -6,14 +7,14 @@ export const index: object = { ...pagination, ...{ orderBy: Joi.string(), - id: Joi.string().regex(/^[0-9]+$/, "numbers"), + id: blockId, version: Joi.number() .integer() .min(0), timestamp: Joi.number() .integer() .min(0), - previousBlock: Joi.string().regex(/^[0-9]+$/, "numbers"), + previousBlock: blockId, height: Joi.number() .integer() .positive(), @@ -58,7 +59,7 @@ export const transactions: object = { id: Joi.string() .hex() .length(66), - blockId: Joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, type: Joi.number() .integer() .min(0), @@ -91,11 +92,11 @@ export const transactions: object = { export const search: object = { query: pagination, payload: { - id: Joi.string().regex(/^[0-9]+$/, "numbers"), + id: blockId, version: Joi.number() .integer() .min(0), - previousBlock: Joi.string().regex(/^[0-9]+$/, "numbers"), + previousBlock: blockId, payloadHash: Joi.string().hex(), generatorPublicKey: Joi.string() .hex() diff --git a/packages/core-api/src/versions/2/delegates/schema.ts b/packages/core-api/src/versions/2/delegates/schema.ts index 097ce6fe4f..a351fa20b6 100644 --- a/packages/core-api/src/versions/2/delegates/schema.ts +++ b/packages/core-api/src/versions/2/delegates/schema.ts @@ -1,5 +1,6 @@ import { app } from "@arkecosystem/core-container"; import * as Joi from "joi"; +import { blockId } from "../shared/schemas/block-id"; import { pagination } from "../shared/schemas/pagination"; const config = app.getConfig(); @@ -121,14 +122,14 @@ export const blocks: object = { ...pagination, ...{ orderBy: Joi.string(), - id: Joi.string().regex(/^[0-9]+$/, "numbers"), + id: blockId, version: Joi.number() .integer() .min(0), timestamp: Joi.number() .integer() .min(0), - previousBlock: Joi.string().regex(/^[0-9]+$/, "numbers"), + previousBlock: blockId, height: Joi.number() .integer() .positive(), diff --git a/packages/core-api/src/versions/2/shared/schemas/block-id.ts b/packages/core-api/src/versions/2/shared/schemas/block-id.ts new file mode 100644 index 0000000000..731799ad1f --- /dev/null +++ b/packages/core-api/src/versions/2/shared/schemas/block-id.ts @@ -0,0 +1,11 @@ +import * as Joi from "joi"; + +export const blockId = Joi.alternatives().try( + Joi.string() + .min(1) + .max(20) + .regex(/^[0-9]+$/, "decimal non-negative integer"), + Joi.string() + .length(64) + .hex(), +); diff --git a/packages/core-api/src/versions/2/transactions/schema.ts b/packages/core-api/src/versions/2/transactions/schema.ts index c135fd99ee..81c427351f 100644 --- a/packages/core-api/src/versions/2/transactions/schema.ts +++ b/packages/core-api/src/versions/2/transactions/schema.ts @@ -1,4 +1,5 @@ import joi from "joi"; +import { blockId } from "../shared/schemas/block-id"; import { pagination } from "../shared/schemas/pagination"; export const index: object = { @@ -10,7 +11,7 @@ export const index: object = { .string() .hex() .length(64), - blockId: joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, type: joi .number() .integer() @@ -96,7 +97,7 @@ export const search: object = { .string() .hex() .length(64), - blockId: joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, type: joi .number() .integer() diff --git a/packages/core-api/src/versions/2/votes/schema.ts b/packages/core-api/src/versions/2/votes/schema.ts index 1f9acde79d..840ff8cb37 100644 --- a/packages/core-api/src/versions/2/votes/schema.ts +++ b/packages/core-api/src/versions/2/votes/schema.ts @@ -1,4 +1,5 @@ import * as Joi from "joi"; +import { blockId } from "../shared/schemas/block-id"; import { pagination } from "../shared/schemas/pagination"; export const index: object = { @@ -9,7 +10,7 @@ export const index: object = { id: Joi.string() .hex() .length(64), - blockId: Joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, version: Joi.number() .integer() .positive(), diff --git a/packages/core-api/src/versions/2/wallets/schema.ts b/packages/core-api/src/versions/2/wallets/schema.ts index 7e9bd48747..6f283692b8 100644 --- a/packages/core-api/src/versions/2/wallets/schema.ts +++ b/packages/core-api/src/versions/2/wallets/schema.ts @@ -1,4 +1,5 @@ import * as Joi from "joi"; +import { blockId } from "../shared/schemas/block-id"; import { pagination } from "../shared/schemas/pagination"; export const index: object = { @@ -50,7 +51,7 @@ export const transactions: object = { id: Joi.string() .hex() .length(64), - blockId: Joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, type: Joi.number() .integer() .min(0), @@ -94,7 +95,7 @@ export const transactionsSent: object = { id: Joi.string() .hex() .length(64), - blockId: Joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, type: Joi.number() .integer() .min(0), @@ -132,7 +133,7 @@ export const transactionsReceived: object = { id: Joi.string() .hex() .length(64), - blockId: Joi.string().regex(/^[0-9]+$/, "numbers"), + blockId, type: Joi.number() .integer() .min(0), diff --git a/packages/core-snapshots/src/transport/codecs/core/index.ts b/packages/core-snapshots/src/transport/codecs/core/index.ts index efce42f9a7..a7e9cb62cb 100644 --- a/packages/core-snapshots/src/transport/codecs/core/index.ts +++ b/packages/core-snapshots/src/transport/codecs/core/index.ts @@ -10,7 +10,6 @@ export const blockEncode = blockRecord => { export const blockDecode = bufferData => { const blockData = Block.deserialize(bufferData.toString("hex"), true); - blockData.id = Block.getIdFromSerialized(bufferData); blockData.totalAmount = (blockData.totalAmount as Bignum).toFixed(); blockData.totalFee = (blockData.totalFee as Bignum).toFixed(); diff --git a/packages/crypto/src/errors.ts b/packages/crypto/src/errors.ts index dc9a9052c8..2d4f0d6367 100644 --- a/packages/crypto/src/errors.ts +++ b/packages/crypto/src/errors.ts @@ -125,3 +125,13 @@ export class BlockSchemaError extends CryptoError { super(what); } } + +export class PreviousBlockIdFormatError extends CryptoError { + constructor(thisBlockHeight: number, previousBlockId: string) { + super( + `The config denotes that the block at height ${thisBlockHeight - 1} ` + + `must use full SHA256 block id, but the next block (at ${thisBlockHeight}) ` + + `contains previous block id "${previousBlockId}"`, + ); + } +} diff --git a/packages/crypto/src/models/block.ts b/packages/crypto/src/models/block.ts index e7d5b58ef3..25afc5c10b 100644 --- a/packages/crypto/src/models/block.ts +++ b/packages/crypto/src/models/block.ts @@ -77,9 +77,15 @@ export class Block implements IBlock { } public static getIdHex(data): string { + const constants = configManager.getMilestone(data.height); const payloadHash: any = Block.serialize(data); + const hash = HashAlgorithms.sha256(payloadHash); + if (constants.block.idFullSha256) { + return hash.toString("hex"); + } + const temp = Buffer.alloc(8); for (let i = 0; i < 8; i++) { @@ -93,21 +99,14 @@ export class Block implements IBlock { return "0".repeat(16 - temp.length) + temp; } - /** - * Get block id from already serialized buffer - */ - public static getIdFromSerialized(serializedBuffer: Buffer): string { - const hash = HashAlgorithms.sha256(serializedBuffer); - const temp = Buffer.alloc(8); + public static getId(data): string { + const constants = configManager.getMilestone(data.height); + const idHex = Block.getIdHex(data); - for (let i = 0; i < 8; i++) { - temp[i] = hash[7 - i]; + if (constants.block.idFullSha256) { + return idHex; } - return new Bignum(temp.toString("hex"), 16).toFixed(); - } - public static getId(data): string { - const idHex = Block.getIdHex(data); return new Bignum(idHex, 16).toFixed(); } diff --git a/packages/crypto/src/networks/devnet/milestones.json b/packages/crypto/src/networks/devnet/milestones.json index 3b3a3f93b0..9eb4bd378b 100644 --- a/packages/crypto/src/networks/devnet/milestones.json +++ b/packages/crypto/src/networks/devnet/milestones.json @@ -51,5 +51,11 @@ { "height": 1750000, "vendorFieldLength": 255 + }, + { + "height": 1840000, + "block": { + "idFullSha256": true + } } ] diff --git a/packages/crypto/src/networks/mainnet/milestones.json b/packages/crypto/src/networks/mainnet/milestones.json index a37a18017f..0188f69328 100644 --- a/packages/crypto/src/networks/mainnet/milestones.json +++ b/packages/crypto/src/networks/mainnet/milestones.json @@ -39,5 +39,11 @@ { "height": 8000000, "vendorFieldLength": 255 + }, + { + "height": 8050000, + "block": { + "idFullSha256": true + } } ] diff --git a/packages/crypto/src/networks/testnet/milestones.json b/packages/crypto/src/networks/testnet/milestones.json index 740754fc8d..5112d351ff 100644 --- a/packages/crypto/src/networks/testnet/milestones.json +++ b/packages/crypto/src/networks/testnet/milestones.json @@ -32,5 +32,11 @@ { "height": 100000, "vendorFieldLength": 255 + }, + { + "height": 1000000000, + "block": { + "idFullSha256": true + } } ] diff --git a/packages/crypto/src/networks/unitnet/milestones.json b/packages/crypto/src/networks/unitnet/milestones.json index 740754fc8d..00c4fac52a 100644 --- a/packages/crypto/src/networks/unitnet/milestones.json +++ b/packages/crypto/src/networks/unitnet/milestones.json @@ -32,5 +32,11 @@ { "height": 100000, "vendorFieldLength": 255 + }, + { + "height": 4000000, + "block": { + "idFullSha256": true + } } ] diff --git a/packages/crypto/src/transactions/deserializers/block.ts b/packages/crypto/src/transactions/deserializers/block.ts index 9b4f917081..1137226169 100644 --- a/packages/crypto/src/transactions/deserializers/block.ts +++ b/packages/crypto/src/transactions/deserializers/block.ts @@ -22,7 +22,7 @@ class BlockDeserializer { } block.idHex = Block.getIdHex(block); - block.id = new Bignum(block.idHex, 16).toFixed(); + block.id = Block.getId(block); const { outlookTable } = configManager.config.exceptions; if (outlookTable && outlookTable[block.id]) { @@ -38,8 +38,17 @@ class BlockDeserializer { block.version = buf.readUint32(); block.timestamp = buf.readUint32(); block.height = buf.readUint32(); - block.previousBlockHex = buf.readBytes(8).toString("hex"); - block.previousBlock = new Bignum(block.previousBlockHex, 16).toFixed(); + + const constants = configManager.getMilestone(block.height - 1); + + if (constants.block.idFullSha256) { + block.previousBlockHex = buf.readBytes(32).toString("hex"); + block.previousBlock = block.previousBlockHex; + } else { + block.previousBlockHex = buf.readBytes(8).toString("hex"); + block.previousBlock = new Bignum(block.previousBlockHex, 16).toFixed(); + } + block.numberOfTransactions = buf.readUint32(); block.totalAmount = new Bignum(buf.readUint64().toString()); block.totalFee = new Bignum(buf.readUint64().toString()); diff --git a/packages/crypto/src/transactions/serializers/block.ts b/packages/crypto/src/transactions/serializers/block.ts index 42dc230538..3c2825f8f6 100644 --- a/packages/crypto/src/transactions/serializers/block.ts +++ b/packages/crypto/src/transactions/serializers/block.ts @@ -1,6 +1,8 @@ import ByteBuffer from "bytebuffer"; +import { configManager } from "../../managers/config"; import { Block, IBlockData } from "../../models/block"; import { Bignum } from "../../utils"; +import { PreviousBlockIdFormatError } from "../../errors"; import { Transaction } from "../types"; class BlockSerializer { @@ -36,7 +38,16 @@ class BlockSerializer { } private serializeHeader(block: IBlockData, buffer: ByteBuffer): any { - block.previousBlockHex = Block.toBytesHex(block.previousBlock); + const constants = configManager.getMilestone(block.height - 1); + + if (constants.block.idFullSha256) { + if (block.previousBlock.length !== 64) { + throw new PreviousBlockIdFormatError(block.height, block.previousBlock); + } + block.previousBlockHex = block.previousBlock; + } else { + block.previousBlockHex = Block.toBytesHex(block.previousBlock); + } buffer.writeUint32(block.version); buffer.writeUint32(block.timestamp); diff --git a/packages/crypto/src/validation/keywords.ts b/packages/crypto/src/validation/keywords.ts index 55193e7540..ff5729872d 100644 --- a/packages/crypto/src/validation/keywords.ts +++ b/packages/crypto/src/validation/keywords.ts @@ -121,7 +121,18 @@ const blockId = (ajv: Ajv) => { return false; } - return /^[0123456789A-Fa-f]+$/.test(data); + // Partial SHA256 block id (old/legacy), before the switch to full SHA256. + // 8 byte integer either decimal without leading zeros or hex with leading zeros. + const isPartial = /^[0-9]{1,20}$/.test(data) || /^[0-9a-f]{16}$/i.test(data); + const isFullSha256 = /^[0-9a-f]{64}$/i.test(data); + + if (parentObject && parentObject.height) { + const height = schema.isPreviousBlock ? parentObject.height - 1 : parentObject.height; + const constants = configManager.getMilestone(height); + return constants.block.idFullSha256 ? isFullSha256 : isPartial; + } + + return isPartial || isFullSha256; }; }, errors: false, @@ -129,6 +140,7 @@ const blockId = (ajv: Ajv) => { type: "object", properties: { allowNullWhenGenesis: { type: "boolean" }, + isPreviousBlock: { type: "boolean" }, }, additionalItems: false, }, diff --git a/packages/crypto/src/validation/schemas.ts b/packages/crypto/src/validation/schemas.ts index 6ffe92c131..bf66c292f2 100644 --- a/packages/crypto/src/validation/schemas.ts +++ b/packages/crypto/src/validation/schemas.ts @@ -11,12 +11,6 @@ export const schemas = { pattern: "^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$", }, - numericString: { - $id: "numericString", - type: "string", - pattern: "^[0-9]+$", - }, - alphanumeric: { $id: "alphanumeric", type: "string", @@ -77,8 +71,8 @@ export const schemas = { idHex: { blockId: {} }, version: { type: "integer", minimum: 0 }, timestamp: { type: "integer", minimum: 0 }, - previousBlock: { blockId: { allowNullWhenGenesis: true } }, - previousBlockHex: { blockId: { allowNullWhenGenesis: true } }, + previousBlock: { blockId: { allowNullWhenGenesis: true, isPreviousBlock: true } }, + previousBlockHex: { blockId: { allowNullWhenGenesis: true, isPreviousBlock: true } }, height: { type: "integer", minimum: 1 }, numberOfTransactions: { type: "integer" }, totalAmount: { bignumber: { minimum: 0, bypassGenesis: true, block: true } },