@rosen-bridge/abstract-extractor 0.1.2-7aba94c9 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ergo/initializable/AbstractInitializable.d.ts.map +1 -1
- package/dist/ergo/initializable/AbstractInitializable.js +8 -14
- package/dist/ergo/interfaces.d.ts +3 -1
- package/dist/ergo/interfaces.d.ts.map +1 -1
- package/dist/ergo/interfaces.js +1 -1
- package/dist/ergo/network/ExplorerNetwork.d.ts +7 -0
- package/dist/ergo/network/ExplorerNetwork.d.ts.map +1 -1
- package/dist/ergo/network/ExplorerNetwork.js +35 -3
- package/dist/ergo/network/NodeNetwork.d.ts +1 -1
- package/dist/ergo/network/NodeNetwork.d.ts.map +1 -1
- package/dist/ergo/network/NodeNetwork.js +8 -3
- package/lib/ergo/initializable/AbstractInitializable.ts +12 -17
- package/lib/ergo/interfaces.ts +3 -1
- package/lib/ergo/network/ExplorerNetwork.ts +36 -2
- package/lib/ergo/network/NodeNetwork.ts +7 -2
- package/package.json +1 -1
- package/tests/initializable/AbstractInitializable.spec.ts +16 -30
- package/tests/initializable/testData.ts +5 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractInitializable.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/AbstractInitializable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,8BAAsB,kCAAkC,CACtD,aAAa,SAAS,iBAAiB,CACvC,SAAQ,qBAAqB,CAAC,aAAa,CAAC;IAC5C,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wCAAwC,CAAC,aAAa,CAAC,CAAC;IAEpF;;;;OAIG;gBACS,UAAU,UAAO,EAAE,MAAM,CAAC,EAAE,cAAc;IAKtD;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,EAAE,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE1D;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAE1D;;;;OAIG;IACH,wBAAwB,kBACP,MAAM,UACb,MAAM,SACP,MAAM,KACZ,QAAQ;QACT,cAAc,EAAE,MAAM,aAAa,CAAC,CAAC;QACrC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC,
|
|
1
|
+
{"version":3,"file":"AbstractInitializable.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/AbstractInitializable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,8BAAsB,kCAAkC,CACtD,aAAa,SAAS,iBAAiB,CACvC,SAAQ,qBAAqB,CAAC,aAAa,CAAC;IAC5C,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wCAAwC,CAAC,aAAa,CAAC,CAAC;IAEpF;;;;OAIG;gBACS,UAAU,UAAO,EAAE,MAAM,CAAC,EAAE,cAAc;IAKtD;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,EAAE,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE1D;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAE1D;;;;OAIG;IACH,wBAAwB,kBACP,MAAM,UACb,MAAM,SACP,MAAM,KACZ,QAAQ;QACT,cAAc,EAAE,MAAM,aAAa,CAAC,CAAC;QACrC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC,CA+BA;IAEF;;;;;OAKG;IACH,eAAe,iBAAwB,SAAS,mBA+C9C;CACH"}
|
|
@@ -20,24 +20,18 @@ export class AbstractInitializableErgoExtractor extends AbstractErgoExtractor {
|
|
|
20
20
|
fetchDataWithOffsetLimit = async (initialHeight, offset, limit) => {
|
|
21
21
|
const extractedBoxes = [];
|
|
22
22
|
const apiOutput = await this.getBoxesWithOffsetLimit(offset, limit);
|
|
23
|
-
const filteredBoxes = apiOutput.boxes.filter((box) => box.
|
|
23
|
+
const filteredBoxes = apiOutput.boxes.filter((box) => box.inclusionHeight <= initialHeight && this.hasData(box));
|
|
24
24
|
for (const box of filteredBoxes) {
|
|
25
|
-
const data = this.extractBoxData(box, box.blockId, box.
|
|
25
|
+
const data = this.extractBoxData(box, box.blockId, box.inclusionHeight);
|
|
26
26
|
if (!data)
|
|
27
27
|
continue;
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
if (block.height <= initialHeight) {
|
|
32
|
-
this.logger.debug(`Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(block)} bellow the initial height`);
|
|
33
|
-
spendBlock = block.hash;
|
|
34
|
-
spendHeight = block.height;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
28
|
+
const spent = box.spentHeight && box.spentHeight <= initialHeight;
|
|
29
|
+
if (spent)
|
|
30
|
+
this.logger.debug(`Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(box.blockId)} bellow the initial height`);
|
|
37
31
|
const extractedData = {
|
|
38
32
|
...data,
|
|
39
|
-
spendBlock,
|
|
40
|
-
spendHeight,
|
|
33
|
+
spendBlock: spent ? box.spentBlockId : undefined,
|
|
34
|
+
spendHeight: spent ? box.spentHeight : undefined,
|
|
41
35
|
};
|
|
42
36
|
this.logger.debug(`Extracted data ${JsonBigInt.stringify(extractedData)} from box ${box.boxId} in initialization phase`);
|
|
43
37
|
extractedBoxes.push(extractedData);
|
|
@@ -81,4 +75,4 @@ export class AbstractInitializableErgoExtractor extends AbstractErgoExtractor {
|
|
|
81
75
|
}
|
|
82
76
|
};
|
|
83
77
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlqRSxNQUFNLE9BQWdCLGtDQUVwQixTQUFRLHFCQUFvQztJQUNsQyxVQUFVLENBQVU7SUFHOUI7Ozs7T0FJRztJQUNILFlBQVksVUFBVSxHQUFHLElBQUksRUFBRSxNQUF1QjtRQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBb0JEOzs7O09BSUc7SUFDSCx3QkFBd0IsR0FBRyxLQUFLLEVBQzlCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxLQUFhLEVBSVosRUFBRTtRQUNILE1BQU0sY0FBYyxHQUF5QixFQUFFLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMxQyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDM0UsQ0FBQztRQUNGLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9B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LGFBQWEsVUFBVSxDQUMzRSxDQUFDO29CQUNKLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsOEJBQThCLElBQUksQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEtBQUssRUFBRSxDQUN0RSxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IEpzb25CaWdJbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5cbmltcG9ydCB7IEVyZ29Cb3gsIEVyZ29FeHRyYWN0ZWREYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBUElfTElNSVQsIFJFVFJJQUxfQ09VTlQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RFcmdvRXh0cmFjdG9yIH0gZnJvbSAnLi4vQWJzdHJhY3RFcmdvRXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbic7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvcjxFeHRyYWN0ZWREYXRhPiB7XG4gIHByb3RlY3RlZCBpbml0aWFsaXplOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYWN0aW9uczogQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhPjtcblxuICAvKipcbiAgICogY3JlYXRlIGFuIGluaXRpYWxpemFibGUgZXJnbyBleHRyYWN0b3JcbiAgICogQHBhcmFtIGluaXRpYWxpemUgaWdub3JlIHRoZSBpbml0aWFsaXphdGlvbiBzdGVwIGlmIGl0cyBmYWxzZVxuICAgKiBAcGFyYW0gbG9nZ2VyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihpbml0aWFsaXplID0gdHJ1ZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICBzdXBlcihsb2dnZXIpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGluaXQgcmVxdWlyZWQgYm94ZXMgd2l0aCBvZmZzZXQgbGltaXRcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybiBib3hlcyBpbiBiYXRjaFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Qm94ZXNXaXRoT2Zmc2V0TGltaXQ6IChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PjtcblxuICAvKipcbiAgICogcmV0dXJuIGJsb2NrIGluZm9ybWF0aW9uIG9mIHNwZWNpZmllZCB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKiBAcmV0dXJuIGJsb2NrIGluZm9cbiAgICovXG4gIGFic3RyYWN0IGdldFR4QmxvY2s6ICh0eElkOiBzdHJpbmcpID0+IFByb21pc2U8QmxvY2tJbmZvPjtcblxuICAvKipcbiAgICogcmV0dXJuIGFsbCByZWxhdGVkIGRhdGEgYmVsb3cgdGhlIGluaXRpYWwgaGVpZ2h0IChpbmNsdWRpbmcgdGhlIGluaXQgaGVpZ2h0KVxuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGluIGJhdGNoXG4gICAqL1xuICBmZXRjaERhdGFXaXRoT2Zmc2V0TGltaXQgPSBhc3luYyAoXG4gICAgaW5pdGlhbEhlaWdodDogbnVtYmVyLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7XG4gICAgZXh0cmFjdGVkQm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+O1xuICAgIGhhc05leHRCYXRjaDogYm9vbGVhbjtcbiAgfT4gPT4ge1xuICAgIGNvbnN0IGV4dHJhY3RlZEJveGVzOiBBcnJheTxFeHRyYWN0ZWREYXRhPiA9IFtdO1xuICAgIGNvbnN0IGFwaU91dHB1dCA9IGF3YWl0IHRoaXMuZ2V0Qm94ZXNXaXRoT2Zmc2V0TGltaXQob2Zmc2V0LCBsaW1pdCk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZEJveGVzID0gYXBpT3V0cHV0LmJveGVzLmZpbHRlcihcbiAgICAgIChib3g6IEVyZ29Cb3gpID0+IGJveC5jcmVhdGlvbkhlaWdodCA8PSBpbml0aWFsSGVpZ2h0ICYmIHRoaXMuaGFzRGF0YShib3gpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBmaWx0ZXJlZEJveGVzKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0Qm94RGF0YShib3gsIGJveC5ibG9ja0lkLCBib3guY3JlYXRpb25IZWlnaHQpO1xuICAgICAgaWYgKCFkYXRhKSBjb250aW51ZTtcbiAgICAgIGxldCBzcGVuZEJsb2NrLCBzcGVuZEhlaWdodDtcbiAgICAgIGlmIChib3guc3BlbnRUcmFuc2FjdGlvbklkKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5nZXRUeEJsb2NrKGJveC5zcGVudFRyYW5zYWN0aW9uSWQpO1xuICAgICAgICBpZiAoYmxvY2suaGVpZ2h0IDw9IGluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBCb3ggd2l0aCBpZCAke2JveC5ib3hJZH0gc3BlbnQgYXQgYmxvY2sgJHtKc29uQmlnSW50LnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgYmxvY2tcbiAgICAgICAgICAgICl9IGJlbGxvdyB0aGUgaW5pdGlhbCBoZWlnaHRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzcGVuZEJsb2NrID0gYmxvY2suaGFzaDtcbiAgICAgICAgICBzcGVuZEhlaWdodCA9IGJsb2NrLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZXh0cmFjdGVkRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgc3BlbmRCbG9jayxcbiAgICAgICAgc3BlbmRIZWlnaHQsXG4gICAgICB9IGFzIEV4dHJhY3RlZERhdGE7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEV4dHJhY3RlZCBkYXRhICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoZXh0cmFjdGVkRGF0YSl9IGZyb20gYm94ICR7XG4gICAgICAgICAgYm94LmJveElkXG4gICAgICAgIH0gaW4gaW5pdGlhbGl6YXRpb24gcGhhc2VgXG4gICAgICApO1xuICAgICAgZXh0cmFjdGVkQm94ZXMucHVzaChleHRyYWN0ZWREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXh0cmFjdGVkQm94ZXMsIGhhc05leHRCYXRjaDogYXBpT3V0cHV0Lmhhc05leHRCYXRjaCB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBpbml0aWFsaXplIGV4dHJhY3RvciBkYXRhYmFzZSB3aXRoIGRhdGEgY3JlYXRlZCBiZWxvdyB0aGUgaW5pdGlhbCBoZWlnaHRcbiAgICogaWdub3JlIGluaXRpYWxpemF0aW9uIGlmIHRoaXMgZmVhdHVyZSBpcyBvZmZcbiAgICogdHJ5IHRvIGdldCBkYXRhIG11bHRpcGxlIHRpbWVzIHRvIHBhc3MgYWNjaWRlbnRhbCBuZXR3b3JrIHByb2JsZW1zXG4gICAqIEBwYXJhbSBpbml0aWFsQmxvY2tcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbykgPT4ge1xuICAgIGxldCB0cmlhbCA9IDE7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBJbml0aWFsaXppbmcgJHt0aGlzLmdldElkKCl9IHN0YXJ0ZWQsIHJlbW92aW5nIGFsbCBleGlzdGluZyBkYXRhYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5yZW1vdmVBbGxEYXRhKHRoaXMuZ2V0SWQoKSk7XG5cbiAgICAgIGxldCBoYXNOZXh0QmF0Y2ggPSB0cnVlO1xuICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICB3aGlsZSAoaGFzTmV4dEJhdGNoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhV2l0aE9mZnNldExpbWl0KFxuICAgICAgICAgICAgaW5pdGlhbEJsb2NrLmhlaWdodCxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIEFQSV9MSU1JVFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBJbnNlcnRpbmcgJHtcbiAgICAgICAgICAgICAgZGF0YS5leHRyYWN0ZWRCb3hlcy5sZW5ndGhcbiAgICAgICAgICAgIH0gbmV3IGV4dHJhY3RlZCBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBpbml0aWFsaXphdGlvbmBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGluc2VydFN1Y2Nlc3MgPSBhd2FpdCB0aGlzLmFjdGlvbnMuaW5zZXJ0Qm94ZXMoXG4gICAgICAgICAgICBkYXRhLmV4dHJhY3RlZEJveGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRJZCgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWluc2VydFN1Y2Nlc3MpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHN0b3JlIGV4dHJhY3RlZCBkYXRhJyk7XG5cbiAgICAgICAgICBoYXNOZXh0QmF0Y2ggPSBkYXRhLmhhc05leHRCYXRjaDtcbiAgICAgICAgICBvZmZzZXQgKz0gQVBJX0xJTUlUO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGZhaWxlZCB3aXRoIGVycm9yIDoke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRyaWFsID09IFJFVFJJQUxfQ09VTlQpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgYEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuZ2V0SWQoKX0gZmFpbGVkIGFmdGVyICR7UkVUUklBTF9DT1VOVH0gcmV0cmlhbGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdHJpYWwgKz0gMTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFRyeWluZyBhZ2FpbiB0byBpbml0aWFsaXplICR7dGhpcy5nZXRJZCgpfSB3aXRoIHRyaWFsIHN0ZXAgJHt0cmlhbH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGlzIHR1cm5lZCBvZmZgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlqRSxNQUFNLE9BQWdCLGtDQUVwQixTQUFRLHFCQUFvQztJQUNsQyxVQUFVLENBQVU7SUFHOUI7Ozs7T0FJRztJQUNILFlBQVksVUFBVSxHQUFHLElBQUksRUFBRSxNQUF1QjtRQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBb0JEOzs7O09BSUc7SUFDSCx3QkFBd0IsR0FBRyxLQUFLLEVBQzlCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxLQUFhLEVBSVosRUFBRTtRQUNILE1BQU0sY0FBYyxHQUF5QixFQUFFLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMxQyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQ2YsR0FBRyxDQUFDLGVBQWUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDNUQsQ0FBQztRQUNGLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9B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TSxDQUFDLElBQUksQ0FDZCw4QkFBOEIsSUFBSSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsS0FBSyxFQUFFLENBQ3RFLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgSnNvbkJpZ0ludCBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcblxuaW1wb3J0IHsgRXJnb0JveCwgRXJnb0V4dHJhY3RlZERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFQSV9MSU1JVCwgUkVUUklBTF9DT1VOVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3IgfSBmcm9tICcuLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbiB9IGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uJztcbmltcG9ydCB7IEJsb2NrSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcjxcbiAgRXh0cmFjdGVkRGF0YSBleHRlbmRzIEVyZ29FeHRyYWN0ZWREYXRhXG4+IGV4dGVuZHMgQWJzdHJhY3RFcmdvRXh0cmFjdG9yPEV4dHJhY3RlZERhdGE+IHtcbiAgcHJvdGVjdGVkIGluaXRpYWxpemU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3Rpb25zOiBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yQWN0aW9uPEV4dHJhY3RlZERhdGE+O1xuXG4gIC8qKlxuICAgKiBjcmVhdGUgYW4gaW5pdGlhbGl6YWJsZSBlcmdvIGV4dHJhY3RvclxuICAgKiBAcGFyYW0gaW5pdGlhbGl6ZSBpZ25vcmUgdGhlIGluaXRpYWxpemF0aW9uIHN0ZXAgaWYgaXRzIGZhbHNlXG4gICAqIEBwYXJhbSBsb2dnZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxpemUgPSB0cnVlLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHN1cGVyKGxvZ2dlcik7XG4gICAgdGhpcy5pbml0aWFsaXplID0gaW5pdGlhbGl6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gaW5pdCByZXF1aXJlZCBib3hlcyB3aXRoIG9mZnNldCBsaW1pdFxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJuIGJveGVzIGluIGJhdGNoXG4gICAqL1xuICBhYnN0cmFjdCBnZXRCb3hlc1dpdGhPZmZzZXRMaW1pdDogKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKSA9PiBQcm9taXNlPHsgYm94ZXM6IEVyZ29Cb3hbXTsgaGFzTmV4dEJhdGNoOiBib29sZWFuIH0+O1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYmxvY2sgaW5mb3JtYXRpb24gb2Ygc3BlY2lmaWVkIHR4XG4gICAqIEBwYXJhbSB0eElkXG4gICAqIEByZXR1cm4gYmxvY2sgaW5mb1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VHhCbG9jazogKHR4SWQ6IHN0cmluZykgPT4gUHJvbWlzZTxCbG9ja0luZm8+O1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYWxsIHJlbGF0ZWQgZGF0YSBiZWxvdyB0aGUgaW5pdGlhbCBoZWlnaHQgKGluY2x1ZGluZyB0aGUgaW5pdCBoZWlnaHQpXG4gICAqIEBwYXJhbSBpbml0aWFsSGVpZ2h0XG4gICAqIEByZXR1cm4gZXh0cmFjdGVkIGRhdGEgaW4gYmF0Y2hcbiAgICovXG4gIGZldGNoRGF0YVdpdGhPZmZzZXRMaW1pdCA9IGFzeW5jIChcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlclxuICApOiBQcm9taXNlPHtcbiAgICBleHRyYWN0ZWRCb3hlczogQXJyYXk8RXh0cmFjdGVkRGF0YT47XG4gICAgaGFzTmV4dEJhdGNoOiBib29sZWFuO1xuICB9PiA9PiB7XG4gICAgY29uc3QgZXh0cmFjdGVkQm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+ID0gW107XG4gICAgY29uc3QgYXBpT3V0cHV0ID0gYXdhaXQgdGhpcy5nZXRCb3hlc1dpdGhPZmZzZXRMaW1pdChvZmZzZXQsIGxpbWl0KTtcblxuICAgIGNvbnN0IGZpbHRlcmVkQm94ZXMgPSBhcGlPdXRwdXQuYm94ZXMuZmlsdGVyKFxuICAgICAgKGJveDogRXJnb0JveCkgPT5cbiAgICAgICAgYm94LmluY2x1c2lvbkhlaWdodCA8PSBpbml0aWFsSGVpZ2h0ICYmIHRoaXMuaGFzRGF0YShib3gpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBmaWx0ZXJlZEJveGVzKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0Qm94RGF0YShib3gsIGJveC5ibG9ja0lkLCBib3guaW5jbHVzaW9uSGVpZ2h0KTtcbiAgICAgIGlmICghZGF0YSkgY29udGludWU7XG4gICAgICBjb25zdCBzcGVudCA9IGJveC5zcGVudEhlaWdodCAmJiBib3guc3BlbnRIZWlnaHQgPD0gaW5pdGlhbEhlaWdodDtcbiAgICAgIGlmIChzcGVudClcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYEJveCB3aXRoIGlkICR7Ym94LmJveElkfSBzcGVudCBhdCBibG9jayAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICAgICAgYm94LmJsb2NrSWRcbiAgICAgICAgICApfSBiZWxsb3cgdGhlIGluaXRpYWwgaGVpZ2h0YFxuICAgICAgICApO1xuICAgICAgY29uc3QgZXh0cmFjdGVkRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgc3BlbmRCbG9jazogc3BlbnQgPyBib3guc3BlbnRCbG9ja0lkIDogdW5kZWZpbmVkLFxuICAgICAgICBzcGVuZEhlaWdodDogc3BlbnQgPyBib3guc3BlbnRIZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICB9IGFzIEV4dHJhY3RlZERhdGE7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEV4dHJhY3RlZCBkYXRhICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoZXh0cmFjdGVkRGF0YSl9IGZyb20gYm94ICR7XG4gICAgICAgICAgYm94LmJveElkXG4gICAgICAgIH0gaW4gaW5pdGlhbGl6YXRpb24gcGhhc2VgXG4gICAgICApO1xuICAgICAgZXh0cmFjdGVkQm94ZXMucHVzaChleHRyYWN0ZWREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXh0cmFjdGVkQm94ZXMsIGhhc05leHRCYXRjaDogYXBpT3V0cHV0Lmhhc05leHRCYXRjaCB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBpbml0aWFsaXplIGV4dHJhY3RvciBkYXRhYmFzZSB3aXRoIGRhdGEgY3JlYXRlZCBiZWxvdyB0aGUgaW5pdGlhbCBoZWlnaHRcbiAgICogaWdub3JlIGluaXRpYWxpemF0aW9uIGlmIHRoaXMgZmVhdHVyZSBpcyBvZmZcbiAgICogdHJ5IHRvIGdldCBkYXRhIG11bHRpcGxlIHRpbWVzIHRvIHBhc3MgYWNjaWRlbnRhbCBuZXR3b3JrIHByb2JsZW1zXG4gICAqIEBwYXJhbSBpbml0aWFsQmxvY2tcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbykgPT4ge1xuICAgIGxldCB0cmlhbCA9IDE7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBJbml0aWFsaXppbmcgJHt0aGlzLmdldElkKCl9IHN0YXJ0ZWQsIHJlbW92aW5nIGFsbCBleGlzdGluZyBkYXRhYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5yZW1vdmVBbGxEYXRhKHRoaXMuZ2V0SWQoKSk7XG5cbiAgICAgIGxldCBoYXNOZXh0QmF0Y2ggPSB0cnVlO1xuICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICB3aGlsZSAoaGFzTmV4dEJhdGNoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhV2l0aE9mZnNldExpbWl0KFxuICAgICAgICAgICAgaW5pdGlhbEJsb2NrLmhlaWdodCxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIEFQSV9MSU1JVFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBJbnNlcnRpbmcgJHtcbiAgICAgICAgICAgICAgZGF0YS5leHRyYWN0ZWRCb3hlcy5sZW5ndGhcbiAgICAgICAgICAgIH0gbmV3IGV4dHJhY3RlZCBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBpbml0aWFsaXphdGlvbmBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGluc2VydFN1Y2Nlc3MgPSBhd2FpdCB0aGlzLmFjdGlvbnMuaW5zZXJ0Qm94ZXMoXG4gICAgICAgICAgICBkYXRhLmV4dHJhY3RlZEJveGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRJZCgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWluc2VydFN1Y2Nlc3MpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHN0b3JlIGV4dHJhY3RlZCBkYXRhJyk7XG5cbiAgICAgICAgICBoYXNOZXh0QmF0Y2ggPSBkYXRhLmhhc05leHRCYXRjaDtcbiAgICAgICAgICBvZmZzZXQgKz0gQVBJX0xJTUlUO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGZhaWxlZCB3aXRoIGVycm9yIDoke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRyaWFsID09IFJFVFJJQUxfQ09VTlQpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgYEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuZ2V0SWQoKX0gZmFpbGVkIGFmdGVyICR7UkVUUklBTF9DT1VOVH0gcmV0cmlhbGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdHJpYWwgKz0gMTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFRyeWluZyBhZ2FpbiB0byBpbml0aWFsaXplICR7dGhpcy5nZXRJZCgpfSB3aXRoIHRyaWFsIHN0ZXAgJHt0cmlhbH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGlzIHR1cm5lZCBvZmZgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -32,7 +32,9 @@ export type OutputBox = {
|
|
|
32
32
|
};
|
|
33
33
|
export interface ErgoBox extends OutputBox {
|
|
34
34
|
blockId: string;
|
|
35
|
-
|
|
35
|
+
inclusionHeight: number;
|
|
36
|
+
spentBlockId?: string;
|
|
37
|
+
spentHeight?: number;
|
|
36
38
|
}
|
|
37
39
|
export type Transaction = {
|
|
38
40
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../lib/ergo/interfaces.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../lib/ergo/interfaces.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
package/dist/ergo/interfaces.js
CHANGED
|
@@ -3,4 +3,4 @@ export var ErgoNetworkType;
|
|
|
3
3
|
ErgoNetworkType["Explorer"] = "explorer";
|
|
4
4
|
ErgoNetworkType["Node"] = "node";
|
|
5
5
|
})(ErgoNetworkType || (ErgoNetworkType = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lcmdvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qix3Q0FBcUIsQ0FBQTtJQUNyQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXJnb05ldHdvcmtUeXBlIHtcbiAgRXhwbG9yZXIgPSAnZXhwbG9yZXInLFxuICBOb2RlID0gJ25vZGUnLFxufVxuXG5leHBvcnQgdHlwZSBJbnB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFJbnB1dCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFzc2V0ID0ge1xuICB0b2tlbklkOiBzdHJpbmc7XG4gIGFtb3VudDogYmlnaW50O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFJlZ2lzdGVycyA9IHtcbiAgUjQ/OiBzdHJpbmc7XG4gIFI1Pzogc3RyaW5nO1xuICBSNj86IHN0cmluZztcbiAgUjc/OiBzdHJpbmc7XG4gIFI4Pzogc3RyaW5nO1xuICBSOT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE91dHB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgZXJnb1RyZWU6IHN0cmluZztcbiAgY3JlYXRpb25IZWlnaHQ6IG51bWJlcjtcbiAgYXNzZXRzPzogQXJyYXk8QXNzZXQ+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lcmdvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qix3Q0FBcUIsQ0FBQTtJQUNyQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXJnb05ldHdvcmtUeXBlIHtcbiAgRXhwbG9yZXIgPSAnZXhwbG9yZXInLFxuICBOb2RlID0gJ25vZGUnLFxufVxuXG5leHBvcnQgdHlwZSBJbnB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFJbnB1dCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFzc2V0ID0ge1xuICB0b2tlbklkOiBzdHJpbmc7XG4gIGFtb3VudDogYmlnaW50O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFJlZ2lzdGVycyA9IHtcbiAgUjQ/OiBzdHJpbmc7XG4gIFI1Pzogc3RyaW5nO1xuICBSNj86IHN0cmluZztcbiAgUjc/OiBzdHJpbmc7XG4gIFI4Pzogc3RyaW5nO1xuICBSOT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE91dHB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgZXJnb1RyZWU6IHN0cmluZztcbiAgY3JlYXRpb25IZWlnaHQ6IG51bWJlcjtcbiAgYXNzZXRzPzogQXJyYXk8QXNzZXQ+O1xuICBhZGRpdGlvbmFsUmVnaXN0ZXJzPzogQWRkaXRpb25hbFJlZ2lzdGVycztcbiAgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBpbmRleDogYmlnaW50IHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFcmdvQm94IGV4dGVuZHMgT3V0cHV0Qm94IHtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBpbmNsdXNpb25IZWlnaHQ6IG51bWJlcjtcbiAgc3BlbnRCbG9ja0lkPzogc3RyaW5nO1xuICBzcGVudEhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogQXJyYXk8SW5wdXRCb3g+O1xuICBkYXRhSW5wdXRzOiBBcnJheTxEYXRhSW5wdXQ+O1xuICBvdXRwdXRzOiBBcnJheTxPdXRwdXRCb3g+O1xuICBzaXplPzogYmlnaW50O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTcGVuZEluZm8ge1xuICBib3hJZDogc3RyaW5nO1xuICB0eElkOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJnb0V4dHJhY3RlZERhdGEge1xuICBib3hJZDogc3RyaW5nO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBzcGVuZEJsb2NrPzogc3RyaW5nO1xuICBzcGVuZEhlaWdodD86IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BlockInfo } from '../../interfaces';
|
|
2
2
|
import { ErgoBox } from '../interfaces';
|
|
3
3
|
import { AbstractNetwork } from './AbstractNetwork';
|
|
4
|
+
import { V1 } from '@rosen-clients/ergo-explorer';
|
|
4
5
|
export declare class ExplorerNetwork extends AbstractNetwork {
|
|
5
6
|
private api;
|
|
6
7
|
constructor(url: string);
|
|
@@ -9,6 +10,12 @@ export declare class ExplorerNetwork extends AbstractNetwork {
|
|
|
9
10
|
* @param txId
|
|
10
11
|
*/
|
|
11
12
|
getTxBlock: (txId: string) => Promise<BlockInfo>;
|
|
13
|
+
/**
|
|
14
|
+
* convert explorer api boxes to ErgoBox interface
|
|
15
|
+
* @param box
|
|
16
|
+
* @returns ErgoBox
|
|
17
|
+
*/
|
|
18
|
+
convertBox: (box: V1.OutputInfo) => Promise<ErgoBox>;
|
|
12
19
|
/**
|
|
13
20
|
* use explorer api to return related boxes by specified address
|
|
14
21
|
* @param address
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExplorerNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/ExplorerNetwork.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ExplorerNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/ExplorerNetwork.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAElD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;OAGG;IACH,UAAU,SAAgB,MAAM,KAAG,QAAQ,SAAS,CAAC,CAMnD;IAEF;;;;OAIG;IACH,UAAU,QAAe,GAAG,UAAU,KAAG,QAAQ,OAAO,CAAC,CAkBvD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAYrD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAYrD;CACH"}
|
|
@@ -17,6 +17,30 @@ export class ExplorerNetwork extends AbstractNetwork {
|
|
|
17
17
|
height: tx.inclusionHeight,
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* convert explorer api boxes to ErgoBox interface
|
|
22
|
+
* @param box
|
|
23
|
+
* @returns ErgoBox
|
|
24
|
+
*/
|
|
25
|
+
convertBox = async (box) => {
|
|
26
|
+
const spendInfo = box.spentTransactionId
|
|
27
|
+
? await this.getTxBlock(box.spentTransactionId)
|
|
28
|
+
: undefined;
|
|
29
|
+
return {
|
|
30
|
+
blockId: box.blockId,
|
|
31
|
+
boxId: box.boxId,
|
|
32
|
+
creationHeight: box.creationHeight,
|
|
33
|
+
inclusionHeight: box.settlementHeight,
|
|
34
|
+
ergoTree: box.ergoTree,
|
|
35
|
+
index: box.index,
|
|
36
|
+
transactionId: box.transactionId,
|
|
37
|
+
value: box.value,
|
|
38
|
+
additionalRegisters: box.additionalRegisters,
|
|
39
|
+
assets: box.assets,
|
|
40
|
+
spentHeight: spendInfo?.height,
|
|
41
|
+
spentBlockId: spendInfo?.hash,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
20
44
|
/**
|
|
21
45
|
* use explorer api to return related boxes by specified address
|
|
22
46
|
* @param address
|
|
@@ -31,7 +55,11 @@ export class ExplorerNetwork extends AbstractNetwork {
|
|
|
31
55
|
});
|
|
32
56
|
if (!boxes.items)
|
|
33
57
|
throw new Error('Explorer BoxesByAddress api expected to have items');
|
|
34
|
-
|
|
58
|
+
const resultBoxes = [];
|
|
59
|
+
for (const box of boxes.items) {
|
|
60
|
+
resultBoxes.push(await this.convertBox(box));
|
|
61
|
+
}
|
|
62
|
+
return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
|
|
35
63
|
};
|
|
36
64
|
/**
|
|
37
65
|
* use explorer api to return related boxes by specified token id
|
|
@@ -47,7 +75,11 @@ export class ExplorerNetwork extends AbstractNetwork {
|
|
|
47
75
|
});
|
|
48
76
|
if (!boxes.items)
|
|
49
77
|
throw new Error('Explorer BoxesByTokeId api expected to have items');
|
|
50
|
-
|
|
78
|
+
const resultBoxes = [];
|
|
79
|
+
for (const box of boxes.items) {
|
|
80
|
+
resultBoxes.push(await this.convertBox(box));
|
|
81
|
+
}
|
|
82
|
+
return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
|
|
51
83
|
};
|
|
52
84
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwbG9yZXJOZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyx5QkFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUlyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHcEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUMxQyxHQUFHLENBQUM7SUFFWixZQUFZLEdBQVc7UUFDckIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBc0IsRUFBRTtRQUN0RCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELE9BQU87WUFDTCxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87WUFDaEIsTUFBTSxFQUFFLEVBQUUsQ0FBQyxlQUFlO1NBQzNCLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsVUFBVSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFvQixFQUFFO1FBQzFELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0I7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7WUFDL0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDcEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztZQUNsQyxlQUFlLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtZQUNyQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtZQUNoQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtZQUM1QyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNO1lBQzlCLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSTtTQUM5QixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxFQUN2QixPQUFlLEVBQ2YsTUFBYyxFQUNkLEtBQWEsRUFDeUMsRUFBRTtRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRTtZQUNoRSxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sV0FBVyxHQUFtQixFQUFFLENBQUM7UUFDdkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzVFLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGlCQUFpQixHQUFHLEtBQUssRUFDdkIsT0FBZSxFQUNmLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUU7WUFDaEUsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBbUIsRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM1RSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcbmltcG9ydCB7IFYxIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlcic7XG5cbmV4cG9ydCBjbGFzcyBFeHBsb3Jlck5ldHdvcmsgZXh0ZW5kcyBBYnN0cmFjdE5ldHdvcmsge1xuICBwcml2YXRlIGFwaTtcblxuICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KHVybCk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGJsb2NrIGluZm9ybWF0aW9uIG9mIHNwZWNpZmllZCB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKi9cbiAgZ2V0VHhCbG9jayA9IGFzeW5jICh0eElkOiBzdHJpbmcpOiBQcm9taXNlPEJsb2NrSW5mbz4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFUcmFuc2FjdGlvbnNQMSh0eElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFzaDogdHguYmxvY2tJZCxcbiAgICAgIGhlaWdodDogdHguaW5jbHVzaW9uSGVpZ2h0LFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgZXhwbG9yZXIgYXBpIGJveGVzIHRvIEVyZ29Cb3ggaW50ZXJmYWNlXG4gICAqIEBwYXJhbSBib3hcbiAgICogQHJldHVybnMgRXJnb0JveFxuICAgKi9cbiAgY29udmVydEJveCA9IGFzeW5jIChib3g6IFYxLk91dHB1dEluZm8pOiBQcm9taXNlPEVyZ29Cb3g+ID0+IHtcbiAgICBjb25zdCBzcGVuZEluZm8gPSBib3guc3BlbnRUcmFuc2FjdGlvbklkXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0VHhCbG9jayhib3guc3BlbnRUcmFuc2FjdGlvbklkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJsb2NrSWQ6IGJveC5ibG9ja0lkLFxuICAgICAgYm94SWQ6IGJveC5ib3hJZCxcbiAgICAgIGNyZWF0aW9uSGVpZ2h0OiBib3guY3JlYXRpb25IZWlnaHQsXG4gICAgICBpbmNsdXNpb25IZWlnaHQ6IGJveC5zZXR0bGVtZW50SGVpZ2h0LFxuICAgICAgZXJnb1RyZWU6IGJveC5lcmdvVHJlZSxcbiAgICAgIGluZGV4OiBib3guaW5kZXgsXG4gICAgICB0cmFuc2FjdGlvbklkOiBib3gudHJhbnNhY3Rpb25JZCxcbiAgICAgIHZhbHVlOiBib3gudmFsdWUsXG4gICAgICBhZGRpdGlvbmFsUmVnaXN0ZXJzOiBib3guYWRkaXRpb25hbFJlZ2lzdGVycyxcbiAgICAgIGFzc2V0czogYm94LmFzc2V0cyxcbiAgICAgIHNwZW50SGVpZ2h0OiBzcGVuZEluZm8/LmhlaWdodCxcbiAgICAgIHNwZW50QmxvY2tJZDogc3BlbmRJbmZvPy5oYXNoLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIGFkZHJlc3NcbiAgICogQHBhcmFtIGFkZHJlc3NcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybnMgcmVsYXRlZCBib3hlc1xuICAgKi9cbiAgZ2V0Qm94ZXNCeUFkZHJlc3MgPSBhc3luYyAoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PiA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMUJveGVzQnlhZGRyZXNzUDEoYWRkcmVzcywge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwbG9yZXIgQm94ZXNCeUFkZHJlc3MgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCByZXN1bHRCb3hlczogQXJyYXk8RXJnb0JveD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBib3hlcy5pdGVtcykge1xuICAgICAgcmVzdWx0Qm94ZXMucHVzaChhd2FpdCB0aGlzLmNvbnZlcnRCb3goYm94KSk7XG4gICAgfVxuICAgIHJldHVybiB7IGJveGVzOiByZXN1bHRCb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy50b3RhbCA+IG9mZnNldCArIGxpbWl0IH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlUb2tlbklkID0gYXN5bmMgKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFCb3hlc0J5dG9rZW5pZFAxKHRva2VuSWQsIHtcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgbGltaXQ6IGxpbWl0LFxuICAgIH0pO1xuICAgIGlmICghYm94ZXMuaXRlbXMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGxvcmVyIEJveGVzQnlUb2tlSWQgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCByZXN1bHRCb3hlczogQXJyYXk8RXJnb0JveD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBib3hlcy5pdGVtcykge1xuICAgICAgcmVzdWx0Qm94ZXMucHVzaChhd2FpdCB0aGlzLmNvbnZlcnRCb3goYm94KSk7XG4gICAgfVxuICAgIHJldHVybiB7IGJveGVzOiByZXN1bHRCb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy50b3RhbCA+IG9mZnNldCArIGxpbWl0IH07XG4gIH07XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/NodeNetwork.ts"],"names":[],"mappings":"AAAA,OAA8B,EAC5B,cAAc,EACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,gBAAgB,QAAe,cAAc,KAAG,QAAQ,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"NodeNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/NodeNetwork.ts"],"names":[],"mappings":"AAAA,OAA8B,EAC5B,cAAc,EACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,gBAAgB,QAAe,cAAc,KAAG,QAAQ,OAAO,CAAC,CAmB9D;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM,KAAG,QAAQ,SAAS,CAAC,CAMnD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAWrD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAWrD;CACH"}
|
|
@@ -7,23 +7,28 @@ export class NodeNetwork extends AbstractNetwork {
|
|
|
7
7
|
this.api = ergoNodeClientFactory(url);
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* convert node api boxes to ErgoBox interface
|
|
11
11
|
* @param box
|
|
12
12
|
* @returns ErgoBox
|
|
13
13
|
*/
|
|
14
14
|
convertToErgoBox = async (box) => {
|
|
15
15
|
const tx = await this.getTxBlock(box.transactionId);
|
|
16
|
+
const spendInfo = box.spentTransactionId
|
|
17
|
+
? await this.getTxBlock(box.spentTransactionId)
|
|
18
|
+
: undefined;
|
|
16
19
|
return {
|
|
17
20
|
transactionId: box.transactionId || '',
|
|
18
21
|
index: box.index || 0,
|
|
19
22
|
value: box.value || 0n,
|
|
20
23
|
ergoTree: box.ergoTree || '',
|
|
21
24
|
creationHeight: box.creationHeight || 0,
|
|
25
|
+
inclusionHeight: tx.height,
|
|
22
26
|
assets: box.assets || [],
|
|
23
27
|
additionalRegisters: box.additionalRegisters,
|
|
24
28
|
boxId: box.boxId || '',
|
|
25
29
|
blockId: tx.hash,
|
|
26
|
-
|
|
30
|
+
spentBlockId: spendInfo?.hash ?? undefined,
|
|
31
|
+
spentHeight: spendInfo?.height ?? undefined,
|
|
27
32
|
};
|
|
28
33
|
};
|
|
29
34
|
/**
|
|
@@ -72,4 +77,4 @@ export class NodeNetwork extends AbstractNetwork {
|
|
|
72
77
|
return { boxes: ergoBoxes, hasNextBatch: boxes.items.length > 0 };
|
|
73
78
|
};
|
|
74
79
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZU5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby9uZXR3b3JrL05vZGVOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8scUJBRU4sTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQ3RDLEdBQUcsQ0FBQztJQUVaLFlBQVksR0FBVztRQUNyQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsR0FBbUIsRUFBb0IsRUFBRTtRQUNqRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0I7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7WUFDL0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU87WUFDTCxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ3RDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDckIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN0QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzVCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDdkMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxNQUFNO1lBQzFCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDeEIsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtZQUM1QyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSTtZQUNoQixZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxTQUFTO1lBQzFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLFNBQVM7U0FDNUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFzQixFQUFFO1FBQ3RELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTztZQUNMLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztZQUNoQixNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWU7U0FDM0IsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGlCQUFpQixHQUFHLEtBQUssRUFDdkIsT0FBZSxFQUNmLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtZQUN0RCxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakUsQ0FBQztRQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNwRSxDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3ZCLE9BQWUsRUFDZixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDdEQsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2pFLENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXJnb05vZGVDbGllbnRGYWN0b3J5LCB7XG4gIEluZGV4ZWRFcmdvQm94LFxufSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLW5vZGUnO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcblxuZXhwb3J0IGNsYXNzIE5vZGVOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrIHtcbiAgcHJpdmF0ZSBhcGk7XG5cbiAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KHVybCk7XG4gIH1cblxuICAvKipcbiAgICogY29udmVydCBub2RlIGFwaSBib3hlcyB0byBFcmdvQm94IGludGVyZmFjZVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm5zIEVyZ29Cb3hcbiAgICovXG4gIGNvbnZlcnRUb0VyZ29Cb3ggPSBhc3luYyAoYm94OiBJbmRleGVkRXJnb0JveCk6IFByb21pc2U8RXJnb0JveD4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5nZXRUeEJsb2NrKGJveC50cmFuc2FjdGlvbklkISk7XG4gICAgY29uc3Qgc3BlbmRJbmZvID0gYm94LnNwZW50VHJhbnNhY3Rpb25JZFxuICAgICAgPyBhd2FpdCB0aGlzLmdldFR4QmxvY2soYm94LnNwZW50VHJhbnNhY3Rpb25JZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc2FjdGlvbklkOiBib3gudHJhbnNhY3Rpb25JZCB8fCAnJyxcbiAgICAgIGluZGV4OiBib3guaW5kZXggfHwgMCxcbiAgICAgIHZhbHVlOiBib3gudmFsdWUgfHwgMG4sXG4gICAgICBlcmdvVHJlZTogYm94LmVyZ29UcmVlIHx8ICcnLFxuICAgICAgY3JlYXRpb25IZWlnaHQ6IGJveC5jcmVhdGlvbkhlaWdodCB8fCAwLFxuICAgICAgaW5jbHVzaW9uSGVpZ2h0OiB0eC5oZWlnaHQsXG4gICAgICBhc3NldHM6IGJveC5hc3NldHMgfHwgW10sXG4gICAgICBhZGRpdGlvbmFsUmVnaXN0ZXJzOiBib3guYWRkaXRpb25hbFJlZ2lzdGVycyxcbiAgICAgIGJveElkOiBib3guYm94SWQgfHwgJycsXG4gICAgICBibG9ja0lkOiB0eC5oYXNoLFxuICAgICAgc3BlbnRCbG9ja0lkOiBzcGVuZEluZm8/Lmhhc2ggPz8gdW5kZWZpbmVkLFxuICAgICAgc3BlbnRIZWlnaHQ6IHNwZW5kSW5mbz8uaGVpZ2h0ID8/IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYmxvY2sgaW5mb3JtYXRpb24gb2Ygc3BlY2lmaWVkIHR4XG4gICAqIEBwYXJhbSB0eElkXG4gICAqL1xuICBnZXRUeEJsb2NrID0gYXN5bmMgKHR4SWQ6IHN0cmluZyk6IFByb21pc2U8QmxvY2tJbmZvPiA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLmFwaS5nZXRUeEJ5SWQodHhJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhc2g6IHR4LmJsb2NrSWQsXG4gICAgICBoZWlnaHQ6IHR4LmluY2x1c2lvbkhlaWdodCxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2Ugbm9kZSBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIGFkZHJlc3NcbiAgICogQHBhcmFtIGFkZHJlc3NcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybnMgcmVsYXRlZCBib3hlc1xuICAgKi9cbiAgZ2V0Qm94ZXNCeUFkZHJlc3MgPSBhc3luYyAoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PiA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmFwaS5nZXRCb3hlc0J5QWRkcmVzcyhhZGRyZXNzLCB7XG4gICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICB9KTtcbiAgICBpZiAoIWJveGVzLml0ZW1zKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcmdvIG5vZGUgQm94ZXNCeUFkZHJlc3MgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCBlcmdvQm94ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGJveGVzLml0ZW1zLm1hcChhc3luYyAoYm94KSA9PiBhd2FpdCB0aGlzLmNvbnZlcnRUb0VyZ29Cb3goYm94KSlcbiAgICApO1xuICAgIHJldHVybiB7IGJveGVzOiBlcmdvQm94ZXMsIGhhc05leHRCYXRjaDogYm94ZXMuaXRlbXMubGVuZ3RoID4gMCB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2Ugbm9kZSBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlUb2tlbklkID0gYXN5bmMgKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkuZ2V0Qm94ZXNCeVRva2VuSWQodG9rZW5JZCwge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJnbyBub2RlIEJveGVzQnlUb2tlbklkIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyk7XG4gICAgY29uc3QgZXJnb0JveGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBib3hlcy5pdGVtcy5tYXAoYXN5bmMgKGJveCkgPT4gYXdhaXQgdGhpcy5jb252ZXJ0VG9FcmdvQm94KGJveCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBib3hlczogZXJnb0JveGVzLCBoYXNOZXh0QmF0Y2g6IGJveGVzLml0ZW1zLmxlbmd0aCA+IDAgfTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -58,28 +58,23 @@ export abstract class AbstractInitializableErgoExtractor<
|
|
|
58
58
|
const apiOutput = await this.getBoxesWithOffsetLimit(offset, limit);
|
|
59
59
|
|
|
60
60
|
const filteredBoxes = apiOutput.boxes.filter(
|
|
61
|
-
(box: ErgoBox) =>
|
|
61
|
+
(box: ErgoBox) =>
|
|
62
|
+
box.inclusionHeight <= initialHeight && this.hasData(box)
|
|
62
63
|
);
|
|
63
64
|
for (const box of filteredBoxes) {
|
|
64
|
-
const data = this.extractBoxData(box, box.blockId, box.
|
|
65
|
+
const data = this.extractBoxData(box, box.blockId, box.inclusionHeight);
|
|
65
66
|
if (!data) continue;
|
|
66
|
-
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
)} bellow the initial height`
|
|
74
|
-
);
|
|
75
|
-
spendBlock = block.hash;
|
|
76
|
-
spendHeight = block.height;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
67
|
+
const spent = box.spentHeight && box.spentHeight <= initialHeight;
|
|
68
|
+
if (spent)
|
|
69
|
+
this.logger.debug(
|
|
70
|
+
`Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(
|
|
71
|
+
box.blockId
|
|
72
|
+
)} bellow the initial height`
|
|
73
|
+
);
|
|
79
74
|
const extractedData = {
|
|
80
75
|
...data,
|
|
81
|
-
spendBlock,
|
|
82
|
-
spendHeight,
|
|
76
|
+
spendBlock: spent ? box.spentBlockId : undefined,
|
|
77
|
+
spendHeight: spent ? box.spentHeight : undefined,
|
|
83
78
|
} as ExtractedData;
|
|
84
79
|
this.logger.debug(
|
|
85
80
|
`Extracted data ${JsonBigInt.stringify(extractedData)} from box ${
|
package/lib/ergo/interfaces.ts
CHANGED
|
@@ -3,6 +3,7 @@ import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
|
|
|
3
3
|
import { BlockInfo } from '../../interfaces';
|
|
4
4
|
import { ErgoBox } from '../interfaces';
|
|
5
5
|
import { AbstractNetwork } from './AbstractNetwork';
|
|
6
|
+
import { V1 } from '@rosen-clients/ergo-explorer';
|
|
6
7
|
|
|
7
8
|
export class ExplorerNetwork extends AbstractNetwork {
|
|
8
9
|
private api;
|
|
@@ -24,6 +25,31 @@ export class ExplorerNetwork extends AbstractNetwork {
|
|
|
24
25
|
};
|
|
25
26
|
};
|
|
26
27
|
|
|
28
|
+
/**
|
|
29
|
+
* convert explorer api boxes to ErgoBox interface
|
|
30
|
+
* @param box
|
|
31
|
+
* @returns ErgoBox
|
|
32
|
+
*/
|
|
33
|
+
convertBox = async (box: V1.OutputInfo): Promise<ErgoBox> => {
|
|
34
|
+
const spendInfo = box.spentTransactionId
|
|
35
|
+
? await this.getTxBlock(box.spentTransactionId)
|
|
36
|
+
: undefined;
|
|
37
|
+
return {
|
|
38
|
+
blockId: box.blockId,
|
|
39
|
+
boxId: box.boxId,
|
|
40
|
+
creationHeight: box.creationHeight,
|
|
41
|
+
inclusionHeight: box.settlementHeight,
|
|
42
|
+
ergoTree: box.ergoTree,
|
|
43
|
+
index: box.index,
|
|
44
|
+
transactionId: box.transactionId,
|
|
45
|
+
value: box.value,
|
|
46
|
+
additionalRegisters: box.additionalRegisters,
|
|
47
|
+
assets: box.assets,
|
|
48
|
+
spentHeight: spendInfo?.height,
|
|
49
|
+
spentBlockId: spendInfo?.hash,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
|
|
27
53
|
/**
|
|
28
54
|
* use explorer api to return related boxes by specified address
|
|
29
55
|
* @param address
|
|
@@ -42,7 +68,11 @@ export class ExplorerNetwork extends AbstractNetwork {
|
|
|
42
68
|
});
|
|
43
69
|
if (!boxes.items)
|
|
44
70
|
throw new Error('Explorer BoxesByAddress api expected to have items');
|
|
45
|
-
|
|
71
|
+
const resultBoxes: Array<ErgoBox> = [];
|
|
72
|
+
for (const box of boxes.items) {
|
|
73
|
+
resultBoxes.push(await this.convertBox(box));
|
|
74
|
+
}
|
|
75
|
+
return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
|
|
46
76
|
};
|
|
47
77
|
|
|
48
78
|
/**
|
|
@@ -63,6 +93,10 @@ export class ExplorerNetwork extends AbstractNetwork {
|
|
|
63
93
|
});
|
|
64
94
|
if (!boxes.items)
|
|
65
95
|
throw new Error('Explorer BoxesByTokeId api expected to have items');
|
|
66
|
-
|
|
96
|
+
const resultBoxes: Array<ErgoBox> = [];
|
|
97
|
+
for (const box of boxes.items) {
|
|
98
|
+
resultBoxes.push(await this.convertBox(box));
|
|
99
|
+
}
|
|
100
|
+
return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
|
|
67
101
|
};
|
|
68
102
|
}
|
|
@@ -15,23 +15,28 @@ export class NodeNetwork extends AbstractNetwork {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* convert node api boxes to ErgoBox interface
|
|
19
19
|
* @param box
|
|
20
20
|
* @returns ErgoBox
|
|
21
21
|
*/
|
|
22
22
|
convertToErgoBox = async (box: IndexedErgoBox): Promise<ErgoBox> => {
|
|
23
23
|
const tx = await this.getTxBlock(box.transactionId!);
|
|
24
|
+
const spendInfo = box.spentTransactionId
|
|
25
|
+
? await this.getTxBlock(box.spentTransactionId)
|
|
26
|
+
: undefined;
|
|
24
27
|
return {
|
|
25
28
|
transactionId: box.transactionId || '',
|
|
26
29
|
index: box.index || 0,
|
|
27
30
|
value: box.value || 0n,
|
|
28
31
|
ergoTree: box.ergoTree || '',
|
|
29
32
|
creationHeight: box.creationHeight || 0,
|
|
33
|
+
inclusionHeight: tx.height,
|
|
30
34
|
assets: box.assets || [],
|
|
31
35
|
additionalRegisters: box.additionalRegisters,
|
|
32
36
|
boxId: box.boxId || '',
|
|
33
37
|
blockId: tx.hash,
|
|
34
|
-
|
|
38
|
+
spentBlockId: spendInfo?.hash ?? undefined,
|
|
39
|
+
spentHeight: spendInfo?.height ?? undefined,
|
|
35
40
|
};
|
|
36
41
|
};
|
|
37
42
|
|
package/package.json
CHANGED
|
@@ -13,11 +13,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
13
13
|
* @scenario
|
|
14
14
|
* - mock extractor
|
|
15
15
|
* - mock `hasData` to return true for an unspent box in the init block
|
|
16
|
-
* - spy `extractData`
|
|
16
|
+
* - spy `extractData`
|
|
17
17
|
* - run test (call `fetchDataWithOffsetLimit`)
|
|
18
18
|
* @expected
|
|
19
19
|
* - to call `extractData` with unspent box information
|
|
20
|
-
* - not to call `getTxBlock` since its unspent
|
|
21
20
|
* - return one extracted element (the unspent box) and api total
|
|
22
21
|
*/
|
|
23
22
|
it('should extract unspent box data in the initial block', async () => {
|
|
@@ -35,7 +34,7 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
35
34
|
expect(extractSpy).toHaveBeenCalledWith(
|
|
36
35
|
unspentBox,
|
|
37
36
|
unspentBox.blockId,
|
|
38
|
-
unspentBox.
|
|
37
|
+
unspentBox.inclusionHeight
|
|
39
38
|
);
|
|
40
39
|
expect(txBlockSpy).not.toHaveBeenCalled();
|
|
41
40
|
expect(data).toEqual({
|
|
@@ -52,11 +51,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
52
51
|
* @scenario
|
|
53
52
|
* - mock extractor
|
|
54
53
|
* - mock `hasData` to return true for all boxes
|
|
55
|
-
* - spy `extractData`
|
|
54
|
+
* - spy `extractData`
|
|
56
55
|
* - run test (call `fetchDataWithOffsetLimit`)
|
|
57
56
|
* @expected
|
|
58
57
|
* - to call `extractData` with spent box information
|
|
59
|
-
* - to call `getTxBlock` since box is spent
|
|
60
58
|
* - return one extracted element created bellow the initial block
|
|
61
59
|
*/
|
|
62
60
|
it('should filter boxes created below the initial block', async () => {
|
|
@@ -65,17 +63,12 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
65
63
|
extractor.hasData = (box: OutputBox) => true;
|
|
66
64
|
const extractSpy = vitest.fn().mockReturnValue(extractedData);
|
|
67
65
|
extractor.extractBoxData = extractSpy;
|
|
68
|
-
const
|
|
69
|
-
.fn()
|
|
70
|
-
.mockResolvedValue({ id: 'hash', height: 1252690 });
|
|
71
|
-
extractor.getTxBlock = txBlockSpy;
|
|
72
|
-
const data = await extractor.fetchDataWithOffsetLimit(1252680, 0, 2);
|
|
66
|
+
const data = await extractor.fetchDataWithOffsetLimit(1252678, 0, 2);
|
|
73
67
|
expect(extractSpy).toHaveBeenCalledWith(
|
|
74
68
|
spentBox,
|
|
75
69
|
spentBox.blockId,
|
|
76
|
-
spentBox.
|
|
70
|
+
spentBox.inclusionHeight
|
|
77
71
|
);
|
|
78
|
-
expect(txBlockSpy).toHaveBeenCalledWith(spentBox.spentTransactionId);
|
|
79
72
|
expect(data).toEqual({
|
|
80
73
|
extractedBoxes: [
|
|
81
74
|
{ ...extractedData, spendBlock: undefined, spendHeight: undefined },
|
|
@@ -90,11 +83,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
90
83
|
* @scenario
|
|
91
84
|
* - mock extractor
|
|
92
85
|
* - mock `hasData` to return true for an spent box created below the init block
|
|
93
|
-
* - spy `extractData`
|
|
86
|
+
* - spy `extractData`
|
|
94
87
|
* - run test (call `fetchDataWithOffsetLimit`)
|
|
95
88
|
* @expected
|
|
96
89
|
* - to call `extractData` with spent box information
|
|
97
|
-
* - to call `getTxBlock` since box is spent
|
|
98
90
|
* - return one extracted element with spending information
|
|
99
91
|
*/
|
|
100
92
|
it('should extract spent box data created and spent below the initial block', async () => {
|
|
@@ -106,20 +98,20 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
106
98
|
};
|
|
107
99
|
const extractSpy = vitest.fn().mockReturnValue(extractedData);
|
|
108
100
|
extractor.extractBoxData = extractSpy;
|
|
109
|
-
const txBlockSpy = vitest
|
|
110
|
-
.fn()
|
|
111
|
-
.mockResolvedValue({ hash: 'hash', height: 1252680 });
|
|
112
|
-
extractor.getTxBlock = txBlockSpy;
|
|
113
101
|
const data = await extractor.fetchDataWithOffsetLimit(1252681, 0, 2);
|
|
114
102
|
expect(extractSpy).toHaveBeenCalledWith(
|
|
115
103
|
spentBox,
|
|
116
104
|
spentBox.blockId,
|
|
117
|
-
spentBox.
|
|
105
|
+
spentBox.inclusionHeight
|
|
118
106
|
);
|
|
119
|
-
expect(txBlockSpy).toHaveBeenCalledWith(spentBox.spentTransactionId);
|
|
120
107
|
expect(data).toEqual({
|
|
121
108
|
extractedBoxes: [
|
|
122
|
-
{
|
|
109
|
+
{
|
|
110
|
+
...extractedData,
|
|
111
|
+
spendBlock:
|
|
112
|
+
'9239ebca7b3b10701895e491a2213da4e07a37abc413d05434a5fab04993a19d',
|
|
113
|
+
spendHeight: 1252680,
|
|
114
|
+
},
|
|
123
115
|
],
|
|
124
116
|
hasNextBatch: true,
|
|
125
117
|
});
|
|
@@ -131,11 +123,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
131
123
|
* @scenario
|
|
132
124
|
* - mock extractor
|
|
133
125
|
* - mock `hasData` to return true for an spent box created below the init block
|
|
134
|
-
* - spy `extractData`
|
|
126
|
+
* - spy `extractData`
|
|
135
127
|
* - run test (call `fetchDataWithOffsetLimit`)
|
|
136
128
|
* @expected
|
|
137
129
|
* - to call `extractData` with spent box information
|
|
138
|
-
* - to call `getTxBlock` since box is spent
|
|
139
130
|
* - return one extracted element without spending information
|
|
140
131
|
*/
|
|
141
132
|
it('should extract spent box data created below the initial block but spent later', async () => {
|
|
@@ -147,17 +138,12 @@ describe('AbstractInitializableErgoExtractorAction', () => {
|
|
|
147
138
|
};
|
|
148
139
|
const extractSpy = vitest.fn().mockReturnValue(extractedData);
|
|
149
140
|
extractor.extractBoxData = extractSpy;
|
|
150
|
-
const
|
|
151
|
-
.fn()
|
|
152
|
-
.mockResolvedValue({ hash: 'hash', height: 1252690 });
|
|
153
|
-
extractor.getTxBlock = txBlockSpy;
|
|
154
|
-
const data = await extractor.fetchDataWithOffsetLimit(1252681, 0, 2);
|
|
141
|
+
const data = await extractor.fetchDataWithOffsetLimit(1252678, 0, 2);
|
|
155
142
|
expect(extractSpy).toHaveBeenCalledWith(
|
|
156
143
|
spentBox,
|
|
157
144
|
spentBox.blockId,
|
|
158
|
-
spentBox.
|
|
145
|
+
spentBox.inclusionHeight
|
|
159
146
|
);
|
|
160
|
-
expect(txBlockSpy).toHaveBeenCalledWith(spentBox.spentTransactionId);
|
|
161
147
|
expect(data).toEqual({
|
|
162
148
|
extractedBoxes: [
|
|
163
149
|
{ ...extractedData, spendBlock: undefined, spendHeight: undefined },
|