From 074da0262bcd25a27296a604f13c35723af242e5 Mon Sep 17 00:00:00 2001 From: "fateme.r" Date: Wed, 26 Jul 2023 12:13:18 +0330 Subject: [PATCH 1/2] Add ergo chain getSerializedBoxInfo --- .../abstract-chain/lib/AbstractUtxoChain.ts | 2 +- packages/chains/ergo/lib/ErgoChain.ts | 15 ++++++++ packages/chains/ergo/tests/ErgoChain.spec.ts | 34 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/packages/abstract-chain/lib/AbstractUtxoChain.ts b/packages/abstract-chain/lib/AbstractUtxoChain.ts index a543a35..05d3403 100644 --- a/packages/abstract-chain/lib/AbstractUtxoChain.ts +++ b/packages/abstract-chain/lib/AbstractUtxoChain.ts @@ -22,7 +22,7 @@ abstract class AbstractUtxoChain extends AbstractChain { * @param box the box * @returns an object containing the box id and assets */ - abstract getBoxInfo: (box: BoxType) => BoxInfo; + protected abstract getBoxInfo: (box: BoxType) => BoxInfo; /** * gets useful, allowable and last boxes for an address until required assets are satisfied diff --git a/packages/chains/ergo/lib/ErgoChain.ts b/packages/chains/ergo/lib/ErgoChain.ts index 5240f96..2a66fe8 100644 --- a/packages/chains/ergo/lib/ErgoChain.ts +++ b/packages/chains/ergo/lib/ErgoChain.ts @@ -766,6 +766,21 @@ class ErgoChain extends AbstractUtxoChain { return BigInt(box.tokens().get(0).amount().as_i64().to_str()); }; + /** + * gets box info from a serialized box + * @param serializedBox the serialized string of the box + * @returns box id and assets + */ + getSerializedBoxInfo = (serializedBox: string): BoxInfo => { + // deserialize box + const box = wasm.ErgoBox.sigma_parse_bytes( + Buffer.from(serializedBox, 'hex') + ); + + // get box info + return this.getBoxInfo(box); + }; + /** * generates mapping from input box id to serialized string of output box (filtered by address, containing the token) * @param transactions list of transactions diff --git a/packages/chains/ergo/tests/ErgoChain.spec.ts b/packages/chains/ergo/tests/ErgoChain.spec.ts index 14b51e9..6a93a0d 100644 --- a/packages/chains/ergo/tests/ErgoChain.spec.ts +++ b/packages/chains/ergo/tests/ErgoChain.spec.ts @@ -2036,6 +2036,40 @@ describe('ErgoChain', () => { }); }); + describe('getSerializedBoxInfo', () => { + const network = new TestErgoNetwork(); + + /** + * @target ErgoChain.getSerializedBoxInfo should get box id and assets successfully + * @dependencies + * @scenario + * - mock an ErgoBox with assets + * - construct serialized box and BoxInfo + * - run test + * - check returned value + * @expected + * - it should return constructed BoxInfo + */ + it('should get box id and assets successfully', () => { + // mock an ErgoBox with assets + const box = ergoTestUtils.toErgoBox(boxTestData.ergoBox1); + const serializedBox = Buffer.from(box.sigma_serialize_bytes()).toString( + 'hex' + ); + const boxInfo: BoxInfo = { + id: box.box_id().to_str(), + assets: boxTestData.box1Assets, + }; + + // run test + const ergoChain = generateChainObject(network); + const result = ergoChain.getSerializedBoxInfo(serializedBox); + + // check returned value + expect(result).toEqual(boxInfo); + }); + }); + describe('getGuardsConfigBox', () => { /** * @target ErgoChain.getGuardsConfigBox should get guard box successfully From 69d097c3edf7973eb0b5cd232f4d0d51e06d0caa Mon Sep 17 00:00:00 2001 From: "fateme.r" Date: Wed, 26 Jul 2023 12:29:27 +0330 Subject: [PATCH 2/2] package version update --- package-lock.json | 28 ++++++++++---------- packages/abstract-chain/package.json | 2 +- packages/chains/cardano/package.json | 4 +-- packages/chains/ergo/package.json | 4 +-- packages/networks/cardano-koios/package.json | 6 ++--- packages/networks/ergo-explorer/package.json | 6 ++--- packages/networks/ergo-node/package.json | 6 ++--- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 51d6fd1..c64e378 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8406,7 +8406,7 @@ }, "packages/abstract-chain": { "name": "@rosen-chains/abstract-chain", - "version": "0.1.10", + "version": "0.1.11", "license": "GPL-3.0", "dependencies": { "@rosen-bridge/logger-interface": "^0.1.0", @@ -8431,13 +8431,13 @@ }, "packages/chains/cardano": { "name": "@rosen-chains/cardano", - "version": "0.1.10", + "version": "0.1.11", "license": "GPL-3.0", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.3.1", "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", - "@rosen-chains/abstract-chain": "^0.1.10", + "@rosen-chains/abstract-chain": "^0.1.11", "bech32": "^2.0.0", "blake2b": "^2.1.3", "json-bigint": "^1.0.0" @@ -8461,12 +8461,12 @@ }, "packages/chains/ergo": { "name": "@rosen-chains/ergo", - "version": "0.1.15", + "version": "0.1.16", "license": "GPL-3.0", "dependencies": { "@rosen-bridge/minimum-fee": "^0.1.10", "@rosen-bridge/rosen-extractor": "^0.1.8", - "@rosen-chains/abstract-chain": "^0.1.10", + "@rosen-chains/abstract-chain": "^0.1.11", "blakejs": "^1.2.1", "ergo-lib-wasm-nodejs": "^0.24.0", "json-bigint": "^1.0.0" @@ -8490,15 +8490,15 @@ }, "packages/networks/cardano-koios": { "name": "@rosen-chains/cardano-koios-network", - "version": "0.1.7", + "version": "0.1.8", "license": "GPL-3.0", "dependencies": { "@emurgo/cardano-serialization-lib-nodejs": "^11.3.1", "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", "@rosen-bridge/tokens": "^0.1.12", - "@rosen-chains/abstract-chain": "^0.1.10", - "@rosen-chains/cardano": "^0.1.10", + "@rosen-chains/abstract-chain": "^0.1.11", + "@rosen-chains/cardano": "^0.1.11", "@rosen-clients/cardano-koios": "^0.2.2", "json-bigint": "^1.0.0" }, @@ -8538,14 +8538,14 @@ }, "packages/networks/ergo-explorer": { "name": "@rosen-chains/ergo-explorer-network", - "version": "0.1.10", + "version": "0.1.11", "license": "GPL-3.0", "dependencies": { "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", "@rosen-bridge/tokens": "^0.1.12", - "@rosen-chains/abstract-chain": "^0.1.10", - "@rosen-chains/ergo": "^0.1.15", + "@rosen-chains/abstract-chain": "^0.1.11", + "@rosen-chains/ergo": "^0.1.16", "@rosen-clients/ergo-explorer": "^0.3.0", "ergo-lib-wasm-nodejs": "^0.24.0", "it-all": "^3.0.1", @@ -8581,14 +8581,14 @@ }, "packages/networks/ergo-node": { "name": "@rosen-chains/ergo-node-network", - "version": "0.1.12", + "version": "0.1.13", "license": "GPL-3.0", "dependencies": { "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", "@rosen-bridge/tokens": "^0.1.12", - "@rosen-chains/abstract-chain": "^0.1.10", - "@rosen-chains/ergo": "^0.1.15", + "@rosen-chains/abstract-chain": "^0.1.11", + "@rosen-chains/ergo": "^0.1.16", "@rosen-clients/ergo-node": "^0.3.2", "ergo-lib-wasm-nodejs": "^0.24.0", "it-all": "^3.0.1", diff --git a/packages/abstract-chain/package.json b/packages/abstract-chain/package.json index 5752eaf..151b258 100644 --- a/packages/abstract-chain/package.json +++ b/packages/abstract-chain/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-chains/abstract-chain", - "version": "0.1.10", + "version": "0.1.11", "description": "this project contains abstract classes to implement any chain for Rosen-bridge", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts", diff --git a/packages/chains/cardano/package.json b/packages/chains/cardano/package.json index 8d01fae..e568a7b 100644 --- a/packages/chains/cardano/package.json +++ b/packages/chains/cardano/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-chains/cardano", - "version": "0.1.10", + "version": "0.1.11", "description": "this project contains cardano chain for Rosen-bridge", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts", @@ -23,7 +23,7 @@ "@emurgo/cardano-serialization-lib-nodejs": "^11.3.1", "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", - "@rosen-chains/abstract-chain": "^0.1.10", + "@rosen-chains/abstract-chain": "^0.1.11", "bech32": "^2.0.0", "blake2b": "^2.1.3", "json-bigint": "^1.0.0" diff --git a/packages/chains/ergo/package.json b/packages/chains/ergo/package.json index df65608..710c86d 100644 --- a/packages/chains/ergo/package.json +++ b/packages/chains/ergo/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-chains/ergo", - "version": "0.1.15", + "version": "0.1.16", "description": "this project contains ergo chain for Rosen-bridge", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts", @@ -22,7 +22,7 @@ "dependencies": { "@rosen-bridge/minimum-fee": "^0.1.10", "@rosen-bridge/rosen-extractor": "^0.1.8", - "@rosen-chains/abstract-chain": "^0.1.10", + "@rosen-chains/abstract-chain": "^0.1.11", "blakejs": "^1.2.1", "ergo-lib-wasm-nodejs": "^0.24.0", "json-bigint": "^1.0.0" diff --git a/packages/networks/cardano-koios/package.json b/packages/networks/cardano-koios/package.json index a51a310..9d75058 100644 --- a/packages/networks/cardano-koios/package.json +++ b/packages/networks/cardano-koios/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-chains/cardano-koios-network", - "version": "0.1.7", + "version": "0.1.8", "description": "cardano koios network package for rosen cardano chain", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts", @@ -24,8 +24,8 @@ "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", "@rosen-bridge/tokens": "^0.1.12", - "@rosen-chains/abstract-chain": "^0.1.10", - "@rosen-chains/cardano": "^0.1.10", + "@rosen-chains/abstract-chain": "^0.1.11", + "@rosen-chains/cardano": "^0.1.11", "@rosen-clients/cardano-koios": "^0.2.2", "json-bigint": "^1.0.0" }, diff --git a/packages/networks/ergo-explorer/package.json b/packages/networks/ergo-explorer/package.json index 17560dc..a578c78 100644 --- a/packages/networks/ergo-explorer/package.json +++ b/packages/networks/ergo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-chains/ergo-explorer-network", - "version": "0.1.10", + "version": "0.1.11", "description": "ergo explorer network package for rosen ergo chain", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts", @@ -23,8 +23,8 @@ "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", "@rosen-bridge/tokens": "^0.1.12", - "@rosen-chains/abstract-chain": "^0.1.10", - "@rosen-chains/ergo": "^0.1.15", + "@rosen-chains/abstract-chain": "^0.1.11", + "@rosen-chains/ergo": "^0.1.16", "@rosen-clients/ergo-explorer": "^0.3.0", "ergo-lib-wasm-nodejs": "^0.24.0", "it-all": "^3.0.1", diff --git a/packages/networks/ergo-node/package.json b/packages/networks/ergo-node/package.json index f98c6cb..1bd333d 100644 --- a/packages/networks/ergo-node/package.json +++ b/packages/networks/ergo-node/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-chains/ergo-node-network", - "version": "0.1.12", + "version": "0.1.13", "description": "ergo node network package for rosen ergo chain", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts", @@ -23,8 +23,8 @@ "@rosen-bridge/logger-interface": "^0.1.0", "@rosen-bridge/rosen-extractor": "^0.1.8", "@rosen-bridge/tokens": "^0.1.12", - "@rosen-chains/abstract-chain": "^0.1.10", - "@rosen-chains/ergo": "^0.1.15", + "@rosen-chains/abstract-chain": "^0.1.11", + "@rosen-chains/ergo": "^0.1.16", "@rosen-clients/ergo-node": "^0.3.2", "ergo-lib-wasm-nodejs": "^0.24.0", "it-all": "^3.0.1",