Skip to content

Commit

Permalink
feat(wallet-lib)!: storage layer refactoring (#232)
Browse files Browse the repository at this point in the history
Co-authored-by: Igor Markin <[email protected]>
  • Loading branch information
Alex-Werner and markin-io committed Apr 27, 2022
1 parent 3096f68 commit e440424
Show file tree
Hide file tree
Showing 198 changed files with 2,948 additions and 5,153 deletions.
4 changes: 2 additions & 2 deletions packages/js-dash-sdk/src/SDK/Client/Client.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ describe('Dash - Client', function suite() {

beforeEach(async function beforeEach() {
testMnemonic = 'agree country attract master mimic ball load beauty join gentle turtle hover';
testHDKey = "xprv9s21ZrQH143K4PgfRZPuYjYUWRZkGfEPuWTEUESMoEZLC274ntC4G49qxgZJEPgmujsmY52eVggtwZgJPrWTMXmbYgqDVySWg46XzbGXrSZ";
testHDKey = "tprv8ZgxMBicQKsPeGi4CikhacVPz6UmErenu1PoD3S4XcEDSPP8auRaS8hG3DQtsQ2i9HACgohHwF5sgMVJNksoKqYoZbis8o75Pp1koCme2Yo";

client = new Client({
wallet: {
Expand Down Expand Up @@ -145,7 +145,7 @@ describe('Dash - Client', function suite() {
const importedIdentityIds = account.identities.getIdentityIds();
// Check that we've imported identities properly
expect(importedIdentityIds.length).to.be.equal(accountIdentitiesCountBeforeTest + 1);
expect(importedIdentityIds[0]).to.be.equal(interceptedIdentityStateTransition.getIdentityId().toString());
expect(importedIdentityIds[1]).to.be.equal(interceptedIdentityStateTransition.getIdentityId().toString());
});

it('should throw TransitionBroadcastError when transport resolves error', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,11 @@ export default async function register(
await broadcastStateTransition(this, identityCreateTransition);

// If state transition was broadcast without any errors, import identity to the account
account.storage.insertIdentityIdAtIndex(
account.walletId,
identity.getId().toString(),
identityIndex,
account.storage
.getWalletStore(account.walletId)
.insertIdentityIdAtIndex(
identity.getId().toString(),
identityIndex,
);

return identity;
Expand Down
2 changes: 1 addition & 1 deletion packages/js-dash-sdk/src/SDK/SDK.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { default as _DAPIClient } from '@dashevo/dapi-client';
import {
Wallet as _Wallet,
Account as _Account,
KeyChain as _KeyChain,
DerivableKeyChain as _KeyChain,
CONSTANTS as _WalletLibCONSTANTS,
EVENTS as _WalletLibEVENTS,
utils as _WalletLibUtils,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFi

export function createIdentityFixtureInAccount(account) {
const identityFixture = getIdentityFixture();
const identityFixtureIndex = 10000;
const identityFixtureIndex = 0;
const { privateKey: identityPrivateKey } = account.identities.getIdentityHDKeyByIndex(identityFixtureIndex, 0);

identityFixture.publicKeys[0] = new IdentityPublicKey({
Expand All @@ -15,8 +15,9 @@ export function createIdentityFixtureInAccount(account) {
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER
});

account.storage.insertIdentityIdAtIndex(
account.walletId,
account.storage
.getWalletStore(account.walletId)
.insertIdentityIdAtIndex(
identityFixture.getId().toString(),
identityFixtureIndex,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export async function createTransactionInAccount(account) {
}])
.to(account.getAddress(10).address, 100000);

await account.importTransactions([walletTransaction.serialize(true)]);
await account.importTransactions([[walletTransaction.serialize(true)]]);

return walletTransaction;
}
}
1,087 changes: 1,087 additions & 0 deletions packages/wallet-lib/fixtures/chains/for_wallet_c922713eac.json

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions packages/wallet-lib/fixtures/chains/testnet/blockheaders.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[
{
"height": 600000,
"blockheader": "00000020a69faca490012f4371e4bd40a40167809e6fe1b03c9c5dcb7df247f2fa000000b4b8c2d4a78fb35e50a4eda0bd3a5b9b32f4d739b28a4266f24775b3b79d5b61c73275610e04021ea74d0000",
"hash":"000000de786e659950e0f27681faf1a91871d15de264d0b769cb5941c1d807c3"
},
{
"height": 610000,
"blockheader": "00000020af5155e1f8d5b60fb247ac9bb8badbdce1fa72302336c7daab53585caf0000006d495b9629989ac3699d528956b1f617fb51a199ef4277c3f45f4606aba8e461d1c78a61210b011e94ef0000",
"hash":"00000094d124cfb68d6d59ffaec9f7d63965cb894855684e23a586274b49708f"
}
]
14 changes: 14 additions & 0 deletions packages/wallet-lib/fixtures/chains/testnet/transactions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"blockHash": "000000b2537d9b3468e02dc6f49fb8bbb5c9d8b77895df1e76816fbad5555d7d",
"transaction": "02000000019583d226737edfad682cc1f0297f688bfca4c0046062ed3e88fa47dd47eab2b2010000006a473044022021550232cc659fa412deb2ea98956faf9ff0efea3a04029bb63022f6809105ce0220230a3f955a3ee7563f5b006342d8db940f3b29f4e312701bf51720575c7a7a8a012103f3d2b2ddfe6ffad2b8fc1708f2eafadfed36bf31a05dfa04b1fc176526475b0ffeffffff02a003d806000000001976a91464220a1c12690ec26d837b3be0a2e3588bb4b79188ac4c5bc92b250000001976a9143e89746b9aa52703ab784bc0df467b160406ffb988acb56b0900",
"height": 617398,
"isInstantLocked": true,
"isChainLocked": true
},
{
"transaction": "0200000001c7d66bb85e0069c221b44b07f49f52cc4f2e54f70e14430b94888327763a66a9010000006b483045022100da5b319f73e6adfee751f33308f5a8c1fceeab2683e15e132d79053b3118639602204262022fb85f88d9802649a289a1134b678efcf708faaeae8f101e8eab785054012102bc626898b49f31f5194de7bc68004401639a20cfa82e4c2eac9684a91fc47a57feffffff0270f2f605000000001976a91464220a1c12690ec26d837b3be0a2e3588bb4b79188ac912e250c250000001976a91415e1edb5c5d9e67d0e36f94343b3eff26bb76d1088ac266e0900",
"blockHash":"0000005c81a683007e86e75c76b4b2feca229f806702ca92953562f2ae628ce7",
"height": 618023
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const walletStoreMock = require('./wallet-store.json');
const chainStoreMock = require('./chain-store.json');
const Storage = require('../../../src/types/Storage/Storage');
const { KeyChainStore, DerivableKeyChain } = require('../../../src/index');

module.exports = (opts = {}) => {
const { walletId } = walletStoreMock;

const mockedAccount = {
walletId,
index: 0,
storage: new Storage(),
accountPath: 'm/0',
network: 'testnet',
walletType: 'privateKey',
...opts,
};

mockedAccount.keyChainStore = new KeyChainStore();
mockedAccount.keyChainStore.addKeyChain(new DerivableKeyChain({
privateKey: '2a331817b9d6bf85100ef05503d16f9f57c8855dbf13766b2f26c382b716d396',
lookAheadOpts: {
'm/0': 1,
},
}), { isMasterKeyChain: true });
mockedAccount.storage.createWalletStore(walletId);
mockedAccount.storage.createChainStore('testnet');
mockedAccount.storage.getWalletStore(walletId).importState(walletStoreMock);
mockedAccount.storage.getChainStore('testnet').importState(chainStoreMock);

return mockedAccount;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"walletId": "6101b44d50",
"state": {
"mnemonic": null,
"paths": {
"m/0": {
"path": "m/0",
"addresses": {
"0": "ycDeuTfs4U77bTb5cq17dame28zdWHVYfk"
}
}
},
"identities": {}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ const expectedResultTx9 = {
}
],
transaction: transactionsWithMetadataFixtures[10][0],
type: 'unknown',
type: 'account_transfer',
blockHash: '0000016fb685b4b1efed743d2263de34a9f8323ed75e732654b1b951c5cb4dde',
height: 558236,
isInstantLocked: true,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const walletStoreMock = require('./wallet-store.json');
const chainStoreMock = require('./chain-store.json');
const Storage = require('../../../src/types/Storage/Storage');
const { KeyChainStore, DerivableKeyChain } = require('../../../src/index');

module.exports = (opts = {}) => {
const { walletId } = walletStoreMock;

const mockedAccount = {
walletId,
index: 0,
storage: new Storage(),
accountPath: "m/44'/1'/0'",
network: 'testnet',
walletType: 'hdwallet',
...opts,
};

mockedAccount.keyChainStore = new KeyChainStore();
mockedAccount.keyChainStore.addKeyChain(new DerivableKeyChain({
mnemonic: 'apart trip dignity try point rocket damp reflect raw ten normal young',
lookAheadOpts: {
'm/0': 40,
'm/1': 40,
},
}), { isMasterKeyChain: true });
mockedAccount.storage.createWalletStore(walletId);
mockedAccount.storage.createChainStore('testnet');
mockedAccount.storage.getWalletStore(walletId).importState(walletStoreMock);
mockedAccount.storage.getChainStore('testnet').importState(chainStoreMock);

return mockedAccount;
};
Original file line number Diff line number Diff line change
Expand Up @@ -4,98 +4,98 @@
{
"blockHash": "00000c1e4556add15119392ed36ec6af2640569409abfa23a9972bc3be1b3717",
"height": 558036,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"02000000024f5ccb10d1762b155b25a32c1242f72e506ead7dcdffebbb9a57c450eff24306000000006a473044022006d0f91fbc789475f4bc545901b069a5baf657b36914638b7847e61c6ce508a0022061cc6488a5e8e7d142acf015d9447ea2c37b2c44f7ce9822b2b3421e6f200111012103f7626b79771dc4e1928ffbb407aa32f7089bd8deebb7b7393d28397b504f3002feffffff07f289648f6f097dd46857c15d64576658b9f2c693a1472eb8beaa21b21ec020010000006a47304402207ac2b0c2ea3c073db24d893b533d1d5753f35a85c00971e8d0a1d7fdd77c1ffb0220024b43bdd62ee96189e3da40c5725d771c6cb8df0909826538f558fb32c46cf901210308b60306848cbb551d800192ddecfc07bd6cb34eb23df4c53d840a07d1db6e0cfeffffff02f6fc1a00000000001976a9147d03641b70a1883b600f9646081c8bf626504ac288ac10891132000000001976a9140b348dfe637f57295943cfdc2b5c65c79c0da6ba88ac72810800",
{
"blockHash": "00000221952c2a60adcb929de837f659308cb5c6bb7783016479381fb550fbad",
"height": 557481,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"0200000007fd1ef99bc1edb4ab93ba74309da788e4ac460975733f02936a6321620d2a8011000000006b483045022100dfb220a840d597179abdf49692ad64c1c0da785041975b00aee03c9625639cf202204d06eade5cca19fab1e10b1d6e1b67c77626a0e88bb4d5f61bd57293b4b64217012102295ecb812ccf52deaf304bebfe3a59a644f05bac81241ea1e3a2f8750064cbf6feffffff694226ee65ea29ba7ec3e5448464c16f11d5b7564f6b3b5d0425a4c751389519000000006b483045022100beff3263b7c99720e99af9ec146c818701efb0130603f1570f427b74aef8521802202e660bb9f7ea156f91addd5fe47cbd2c2bf388cc6e1eff3a39adffd89d26d346012102c33942799f7cbf4a7d12f1b3e52cb80cc4de083b997d3e63915df9973d5bce2afeffffff963e9964a8394a07dde1dbb1e8b34af0f194def0db77fa69229030fbade2c82d000000006b483045022100ff67776932e7a32520aa131f76bdfd6737650ad3b11edbdf466cca83f691b0e60220633bcbedebacffd53ceb7e9cdbd47928d7c2849f49ac1f8efb9f384c1a4ee46301210371c0bc42e08de059a8829730abb16f3d40cff87e5ad85d65c4a0a949d9c4b524feffffff1fe16550125c3398c25d97308d7ab89bdd3d27a1589c78e97c4823c92723cf40000000006b483045022100cca348c7ab16fac28b3bba502be54a9e3766b7da9821a90605f370b75840569702207d082510aa493988e09da046355b018781718208f8a954e14ea33d608ae59625012103699b9402e109ed9d0c67c6a45be5cf5f1236c44bb9fc4b07a2f3392ba0b64172feffffffce251fb3d87d7df03b0fbd720ce5425ab0ea86d96a4ec658463d9507928bb34b000000006a47304402203ae564ff74b08b1f96bf857f51448434418d747a02039ec1ee109a4f5d8e8106022072f8769bd175416d22f44011f7e67aec301f08573c9937be7e4a09c394c7396601210311bae874933a4503a61d1c8c2e5b57b1a278d28d4892af4bd79ab8a731495265feffffffaf2dfef80d4a1f77c75dfc74e3769d8526c66c467c859b16b3439ab213851eb2000000006a47304402200b49b7059064efb57df453dc2d20002f09b5266bc825760ef81624771f13920802200782616b8c4fb7b5eff94fdf865e6ddc4530d3932b97fdc3a747e8c451f0314c012103a94131f28f8efd67f47f2496ff6e8d9069a3a7df97202a33e90e16f257d03729feffffff344fef05224cca98a16f87515041df61cbca948518761021a286d1a76e2bfdd6000000006a47304402202a24d1123775641269c6f748d3e4dad08a682e4e334a9b73c7df84f6c22e8e7d022022c0cc2225d3f14cb58a6fb3e4bf23c0f33252d9040a9ca9ef66eb17742a476f01210347301de4c9ba7f46b0f27cb82ae70a73749821e2951d3c87c2f0d56648635d1cfeffffff0251d21b00000000001976a91440ca54360086cc0fbd69d862db58ab2b6d22805888ace058340b000000001976a914538da44e7136cc994023d89a7b4b3d02ac0e573988acf1790800",
{
"blockHash": "000001deee9f99e8219a9abcaaea135dbaae8a9b0f1ea214e6b6a37a5c5b115d",
"height": 555506,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"03000000051bacf8f5091d903e647e46672bba1f3a6f2d120f573868958b9105c1ed35bb1c010000006b4830450221008f3e0a1b59bd4072242fafbe994fb264ca3751480628755585de32e7a828b13902205ed37762b260f9ad8ef641084da938b8bd6dd2df0f7d8dca91e7c0ac0d31f4610121039ac6241be1c1f328522f0cd183ccbe78c10ad74d4535bec40f5e8fe082633d3cfffffffffda257e58e513e1bb9dd0cff7795c9efae03af950d269f6638229f7f15781b7d000000006a47304402203773f77a278f4039caa7024373bd5ac8002c12f88ac20b1ac1480ed616c1b561022054811f33ba1403e1fa38839994e97bb4c6540b78b1a2a2d102cccd2f218cd99e012103d59b76bb58143cf8de0ff52007242f7af15f1e6943c40d4d5d5fc5e0aa5141aeffffffff56f47e77356d4de5b665b7c6c41603e47496b37ae46cc01bf301ad80e54538a4010000006a4730440220762743c1cb769a51f6f5e600da17c35cf6ed9d45315e96c96fb203d743118b15022062d5c03716c6a6a9a1bbe9eb139cc500778ef3bf00aa21724e83391edcfcf20b012103e98d3cc012bb72006634b098d678afac500a1b3d3a430ac972075b5fb7153d87ffffffff2d9101b84d69adf1b168403ab2bcfbf3d2eebbf87a99a9be05d649d47d6c7bd3000000006b483045022100d31090741004486f2cb473eb046d058e63f12ff9e101a2f2028d5f0e3371499d022057f7b3f0375590d3961cf8b51bde61a830bb4f29b07d7e48132de7d292306193012103f4991317c773fbb37756fb222909c8bbd44e53f3c4e4f3060edb3df7d8549b24ffffffff774fb1a549c1145d22ee655bd067961eb4f9f876113b6521303db4e3c87f1aeb010000006a473044022064f3b9869041239074dadae73c2d0e78abf100d89f88d4ba33b7b3b83eaf87010220608079322bd051ac7900a3bb96d3bc694f2b8d65850bcfc043ce51e6367c654801210332d0d14a1a28c90c1149b691a675e26f4c8b485b8dcc3624280a9fdc954ef081ffffffff02e064ec69000000001976a914fa49fe511c437a0d4ec01050184bd2d6538b3f0888ac62830100000000001976a91414dfbdcfb48babe7127fa0ee90339c33a46aeda288ac00000000",
{
"blockHash": "00000084b4d9e887a6ad3f37c576a17d79c35ec9301e55210eded519e8cdcd3a",
"height": 558102,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"03000000014e74eb53f4b1fa08e1fa02788005b8ef9f70929b3f0668fcb9dc4093b7385af3010000006a473044022071fcd620db9f245fe91c44e9b298ee5a718c2be728958f9e707dd1f785fb05e002207b05d45e4ab78c83f9117032a109d6afa37883ca5b479d2b3110fb0d773d23df0121033883dff35aeac917a26d2cbfb59a365c7ff83256a49c4d6aed8f1c0684605c40ffffffff0280969800000000001976a914cb579d4aa777c3583f61f28425ae3fea5b60d39088ac2296bf1f000000001976a914500ddabedf00296b40842cea428951d57331d5e088ac00000000",
{
"blockHash": "000000b6006c758eda23ec7e2a640a0bf2c6a0c44827be216faff6bf4fd388e8",
"height": 555507,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"03000000012d9101b84d69adf1b168403ab2bcfbf3d2eebbf87a99a9be05d649d47d6c7bd3010000006a47304402201cc3d6887d5161eba36a5e6fb1ccd8e8f9eeda7fe95b4fb0a1accb99eeba0223022040d0df81fde8f59c807e541ca5bcfc9d7450f76657aeb44c708fa7d65b7d58410121038cdae47fceb5b117cd3ef5bdf8c9f2a83679a9105d012095762067bdb2351ceaffffffff0280969800000000001976a914e00939d2ec2f885f5e7dc7b9f5b06dcf868d0c4b88acabfe261f000000001976a914f03286cbb7954ea6affa9654af6cfe1210dd0c6288ac00000000",
{
"blockHash": "0000012cf6377c6cf2b317a4deed46573c09f04f6880dca731cc9ccea6691e19",
"height": 555508,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"0300000001f8eea18afa702989208916a4fb8ce7ed49b5d915257f6f3dd977f54b41a930f2000000006a4730440220442af7402fad5756cb4bd1890023369c9b4f63129cc2b6020b3e610cfe0f05f502206d90f315d3467d86b71871b484ab1dfdfdc7fb91cc190f35eb84c34d40490d6b012102ba0588ffd3c838b715d7c79bcf1cff2ba69befd5ea52aa3474d66f094536cac0ffffffff0380a9b24b000000001976a914fa49fe511c437a0d4ec01050184bd2d6538b3f0888ac0084d717000000001976a914e922f6420544f1be0cb593c10535cc3469198bc888ac48366206000000001976a91404a791e67467246c3c0a003007793160387de54288ac00000000",
{
"blockHash": "000001953ea0bbb8ad04a9a1a2a707fef207ad22a712d7d3c619f0f9b63fa98c",
"height": 558229,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"0300000001b51d5a6f5c7a680bce489e6f5a9b176ac85c49f10db4798867c7d1eb2036fbc3000000006a4730440220283fd42353767188532db4a4f1c3d0a9e96e313196ae1310af6d3006c7aa64ff022027fa50cf065c096f146e00516cb3e28a9bb387a6cf1103aae0592d5c882d25e5012102ba0588ffd3c838b715d7c79bcf1cff2ba69befd5ea52aa3474d66f094536cac0ffffffff0200131a4b000000001976a914838112cc6c85e074aa7f373e942c9f5240c3e13a88ac89959800000000001976a914f728c15b9a5fe4e6d7b6ed74b323e23f5c6e303f88ac00000000",
{
"blockHash": "000000dffb05c071a8c05082a475b7ce9c1e403f3b89895a6c448fe08535a5f5",
"height": 558230,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"030000000140d85c0bec59ac6ba3892164ef9816b45f5d105769bcae339af9a7874ad4d39c000000006b483045022100eef13b38a771924b1429b119ef27494fe764cf1a7b12962462c4934ba15dd426022037097eaf74e3f3b547bf5e67451c7bf1e2e2a4b7b205850b1315bc4ab983fdf2012103f376b41c9e9ebc3131e33d4de127c57c1bf3ca88f81845595c44f9ac46122677ffffffff02809b8b44000000001976a914f3a39f8266812baa084890d02fc489f2aee8075a88ac89effa02000000001976a914e3dd87e2dd2080c854d0c90abae96d985ae8902288ac00000000",
{
"blockHash": "000000444b3f2f02085f8befe72da5442c865c290658766cf935e1a71a4f4ba7",
"height": 558242,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"0300000002338540c64b794f73913f39f2d42d9139ce7c9d1c0ec5317c62ab4a28d6b0376f010000006a47304402204de0c38c97e07cddaa0da91563b9ae7620c593c18fe146dde8429b662e542b4902203eeb557d6553dbac0d4f813c07d5ad6ecdd9c27e2e228aaba8c727943676f62b0121038ada8b4de6d21a29ab12401e70d7f44566dbd224a056c857f273b48adf8b0cd2ffffffff351180e1d85feb4f2ae13b224a8e630ddcaf9806f8bb3b371bcbc63880ca766f000000006b483045022100b9a1ff2866f2795fead698f7b16f26c42cc91ef4efda6203e147d8fe910b31cb02203c9c846cea5efa369f2f0e015952bd5992a884a0d79b2c237bcaa842a83f0efa0121033f532214f69c414bc1742367df5cd1195c64a5ee08455d0aad17f6de72e9eaadffffffff0200ca9a3b000000001976a9140d2a064dc57ccd2270a436a871f277bbb7b9ca2088ac7f658909000000001976a914e9c12479daba9d989cedba69adb56a5a50fe500288ac00000000",
{
"blockHash": "000001f9c5de4d2b258a975bfbf7b9a3346890af6389512bea3cb6926b9be330",
"height": 558246,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
],
[
"0300000001338540c64b794f73913f39f2d42d9139ce7c9d1c0ec5317c62ab4a28d6b0376f000000006b483045022100b996d726d224a762acf8ab3e37c085e796b44960b8e9933571ac57750e8ed05102201c6a36d72f16140d6a152be40add102d95a4ac5b177d300b10c277859690a859012103b5614f077d750a1eaffb23ca188dbcc7e267f4b8ffdedf81cdf970643027191bffffffff02008c8647000000001976a91414b05906daab037707927bc6c83900d5dbf2849688ac09869303000000001976a914791e51fff6554c18216c83d9ca81cf30cc66aff388ac00000000",
{
"blockHash": "0000016fb685b4b1efed743d2263de34a9f8323ed75e732654b1b951c5cb4dde",
"height": 558236,
"instantLocked": true,
"chainLocked": true
"isInstantLocked": true,
"isChainLocked": true
}
]
]
Loading

0 comments on commit e440424

Please sign in to comment.