@xyo-network/bridge 0.41.0 → 2.32.0-rc.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/LICENSE +165 -0
- package/README.md +67 -8
- package/dist/cjs/Bridge.d.ts +10 -0
- package/dist/cjs/Bridge.d.ts.map +1 -0
- package/dist/{@types/index.js → cjs/Bridge.js} +1 -1
- package/dist/cjs/Bridge.js.map +1 -0
- package/dist/cjs/Config.d.ts +6 -0
- package/dist/cjs/Config.d.ts.map +1 -0
- package/dist/cjs/Config.js +5 -0
- package/dist/cjs/Config.js.map +1 -0
- package/dist/cjs/Queries/Connect.d.ts +8 -0
- package/dist/cjs/Queries/Connect.d.ts.map +1 -0
- package/dist/cjs/Queries/Connect.js +5 -0
- package/dist/cjs/Queries/Connect.js.map +1 -0
- package/dist/cjs/Queries/Disconnect.d.ts +8 -0
- package/dist/cjs/Queries/Disconnect.d.ts.map +1 -0
- package/dist/cjs/Queries/Disconnect.js +5 -0
- package/dist/cjs/Queries/Disconnect.js.map +1 -0
- package/dist/cjs/Queries/index.d.ts +7 -0
- package/dist/cjs/Queries/index.d.ts.map +1 -0
- package/dist/cjs/Queries/index.js +6 -0
- package/dist/cjs/Queries/index.js.map +1 -0
- package/dist/cjs/XyoBridge.d.ts +14 -0
- package/dist/cjs/XyoBridge.d.ts.map +1 -0
- package/dist/cjs/XyoBridge.js +34 -0
- package/dist/cjs/XyoBridge.js.map +1 -0
- package/dist/cjs/XyoBridgeWrapper.d.ts +7 -0
- package/dist/cjs/XyoBridgeWrapper.d.ts.map +1 -0
- package/dist/cjs/XyoBridgeWrapper.js +24 -0
- package/dist/cjs/XyoBridgeWrapper.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +3803 -0
- package/dist/esm/Bridge.d.ts +10 -0
- package/dist/esm/Bridge.d.ts.map +1 -0
- package/dist/esm/Bridge.js +2 -0
- package/dist/esm/Bridge.js.map +1 -0
- package/dist/esm/Config.d.ts +6 -0
- package/dist/esm/Config.d.ts.map +1 -0
- package/dist/esm/Config.js +2 -0
- package/dist/esm/Config.js.map +1 -0
- package/dist/esm/Queries/Connect.d.ts +8 -0
- package/dist/esm/Queries/Connect.d.ts.map +1 -0
- package/dist/esm/Queries/Connect.js +2 -0
- package/dist/esm/Queries/Connect.js.map +1 -0
- package/dist/esm/Queries/Disconnect.d.ts +8 -0
- package/dist/esm/Queries/Disconnect.d.ts.map +1 -0
- package/dist/esm/Queries/Disconnect.js +2 -0
- package/dist/esm/Queries/Disconnect.js.map +1 -0
- package/dist/esm/Queries/index.d.ts +7 -0
- package/dist/esm/Queries/index.d.ts.map +1 -0
- package/dist/esm/Queries/index.js +3 -0
- package/dist/esm/Queries/index.js.map +1 -0
- package/dist/esm/XyoBridge.d.ts +14 -0
- package/dist/esm/XyoBridge.d.ts.map +1 -0
- package/dist/esm/XyoBridge.js +24 -0
- package/dist/esm/XyoBridge.js.map +1 -0
- package/dist/esm/XyoBridgeWrapper.d.ts +7 -0
- package/dist/esm/XyoBridgeWrapper.d.ts.map +1 -0
- package/dist/esm/XyoBridgeWrapper.js +15 -0
- package/dist/esm/XyoBridgeWrapper.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +49 -42
- package/src/Bridge.ts +11 -0
- package/src/Config.ts +7 -0
- package/src/Queries/Connect.ts +9 -0
- package/src/Queries/Disconnect.ts +9 -0
- package/src/Queries/index.ts +9 -0
- package/src/XyoBridge.ts +37 -0
- package/src/XyoBridgeWrapper.ts +18 -0
- package/src/index.ts +4 -2
- package/dist/@types/index.d.ts +0 -15
- package/dist/@types/index.d.ts.map +0 -1
- package/dist/@types/index.js.map +0 -1
- package/dist/app/index.d.ts +0 -1
- package/dist/app/index.d.ts.map +0 -1
- package/dist/app/index.js +0 -48
- package/dist/app/index.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +0 -1
- package/dist/xyo-bridge-bound-witness-success-listener.d.ts +0 -20
- package/dist/xyo-bridge-bound-witness-success-listener.d.ts.map +0 -1
- package/dist/xyo-bridge-bound-witness-success-listener.js +0 -100
- package/dist/xyo-bridge-bound-witness-success-listener.js.map +0 -1
- package/dist/xyo-bridge-procedure-catalogue.d.ts +0 -9
- package/dist/xyo-bridge-procedure-catalogue.d.ts.map +0 -1
- package/dist/xyo-bridge-procedure-catalogue.js +0 -28
- package/dist/xyo-bridge-procedure-catalogue.js.map +0 -1
- package/dist/xyo-bridge.d.ts +0 -31
- package/dist/xyo-bridge.d.ts.map +0 -1
- package/dist/xyo-bridge.js +0 -130
- package/dist/xyo-bridge.js.map +0 -1
- package/src/@types/index.ts +0 -16
- package/src/app/index.ts +0 -55
- package/src/xyo-bridge-bound-witness-success-listener.ts +0 -108
- package/src/xyo-bridge-procedure-catalogue.ts +0 -33
- package/src/xyo-bridge.ts +0 -184
- package/tsconfig.json +0 -31
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* @Author: XY | The Findables Company <ryanxyo>
|
|
4
|
-
* @Date: Thursday, 7th February 2019 11:32:52 am
|
|
5
|
-
* @Email: developer@xyfindables.com
|
|
6
|
-
* @Filename: xyo-bound-witness-success-listener.ts
|
|
7
|
-
* @Last modified by: ryanxyo
|
|
8
|
-
* @Last modified time: Thursday, 7th February 2019 11:33:33 am
|
|
9
|
-
* @License: All Rights Reserved
|
|
10
|
-
* @Copyright: Copyright XY | The Findables Company
|
|
11
|
-
*/
|
|
12
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
-
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
|
17
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
const peer_interaction_1 = require("@xyo-network/peer-interaction");
|
|
22
|
-
const bound_witness_1 = require("@xyo-network/bound-witness");
|
|
23
|
-
const base_1 = require("@xyo-network/base");
|
|
24
|
-
const origin_chain_1 = require("@xyo-network/origin-chain");
|
|
25
|
-
const network_1 = require("@xyo-network/network");
|
|
26
|
-
class XyoBridgeBoundWitnessSuccessListener extends base_1.XyoBase {
|
|
27
|
-
constructor(hashingProvider, boundWitnessValidator, originChainRepository, originBlockRepository, bridgeQueue, bridgeOption) {
|
|
28
|
-
super();
|
|
29
|
-
this.hashingProvider = hashingProvider;
|
|
30
|
-
this.boundWitnessValidator = boundWitnessValidator;
|
|
31
|
-
this.originChainRepository = originChainRepository;
|
|
32
|
-
this.originBlockRepository = originBlockRepository;
|
|
33
|
-
this.bridgeQueue = bridgeQueue;
|
|
34
|
-
this.bridgeOption = bridgeOption;
|
|
35
|
-
}
|
|
36
|
-
onBoundWitnessSuccess(boundWitness, mutex, choice) {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
const hashValue = yield this.hashingProvider.createHash(boundWitness.getSigningData());
|
|
39
|
-
try {
|
|
40
|
-
yield this.boundWitnessValidator.validateBoundWitness(hashValue, boundWitness);
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
this.logError(`Origin block failed validation. Will not add.`, err);
|
|
44
|
-
throw err;
|
|
45
|
-
}
|
|
46
|
-
this.bridgeQueue.addQueueItem(hashValue.serialize());
|
|
47
|
-
const removedSubItemsBlock = this.removeSubBoundWitnesses(boundWitness);
|
|
48
|
-
yield this.originBlockRepository.addOriginBlock(hashValue, removedSubItemsBlock);
|
|
49
|
-
yield this.boundWitnessValidator.validateBoundWitness(hashValue, boundWitness);
|
|
50
|
-
yield this.originChainRepository.updateOriginChainState(hashValue, removedSubItemsBlock, mutex);
|
|
51
|
-
this.logInfo(`${hashValue.serializeHex()} added to Origin-Chain and Origin-Block-Repository`);
|
|
52
|
-
const nestedBoundWitnesses = new peer_interaction_1.XyoNestedBoundWitnessExtractor().extractNestedBoundWitnesses(boundWitness);
|
|
53
|
-
yield nestedBoundWitnesses.reduce((promiseChain, nestedBoundWitness) => __awaiter(this, void 0, void 0, function* () {
|
|
54
|
-
yield promiseChain;
|
|
55
|
-
const nestedHashValue = yield this.hashingProvider.createHash(nestedBoundWitness.getSigningData());
|
|
56
|
-
const nestedHash = nestedHashValue.serialize();
|
|
57
|
-
this.logInfo(`Extracted nested block with hash ${nestedHash.toString('hex')}`);
|
|
58
|
-
const containsBlock = yield this.originBlockRepository.containsOriginBlock(nestedHash);
|
|
59
|
-
if (!containsBlock) {
|
|
60
|
-
try {
|
|
61
|
-
this.bridgeQueue.addQueueItem(nestedHash);
|
|
62
|
-
yield this.boundWitnessValidator.validateBoundWitness(nestedHashValue, nestedBoundWitness);
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
this.logError(`Origin block failed validation. Will not add.`, err);
|
|
66
|
-
throw err;
|
|
67
|
-
}
|
|
68
|
-
yield this.originBlockRepository.addOriginBlock(nestedHashValue, nestedBoundWitness, hashValue);
|
|
69
|
-
}
|
|
70
|
-
}), Promise.resolve());
|
|
71
|
-
if (choice === network_1.CatalogueItem.TAKE_ORIGIN_CHAIN) {
|
|
72
|
-
this.bridgeOption.onCompleted();
|
|
73
|
-
}
|
|
74
|
-
return;
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
removeSubBoundWitnesses(boundWitness) {
|
|
78
|
-
// tslint:disable-next-line:prefer-array-literal
|
|
79
|
-
const newBoundWitnessArray = [];
|
|
80
|
-
boundWitness.fetterWitnesses.forEach((fOW) => {
|
|
81
|
-
if (fOW instanceof bound_witness_1.XyoWitness) {
|
|
82
|
-
const newItems = [];
|
|
83
|
-
const array = fOW.getData();
|
|
84
|
-
array.forEach((item) => {
|
|
85
|
-
if (item.schemaObjectId !== origin_chain_1.XyoBridgeBlockSet.deserializer.schemaObjectId &&
|
|
86
|
-
item.schemaObjectId !== bound_witness_1.XyoSignatureSet.deserializer.schemaObjectId) {
|
|
87
|
-
newItems.push(item);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
newBoundWitnessArray.push(new bound_witness_1.XyoWitness(fOW.signatureSet, newItems));
|
|
91
|
-
}
|
|
92
|
-
else if (fOW instanceof bound_witness_1.XyoFetter) {
|
|
93
|
-
newBoundWitnessArray.push(fOW);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
return new bound_witness_1.XyoBoundWitness(newBoundWitnessArray);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
exports.XyoBridgeBoundWitnessSuccessListener = XyoBridgeBoundWitnessSuccessListener;
|
|
100
|
-
//# sourceMappingURL=xyo-bridge-bound-witness-success-listener.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xyo-bridge-bound-witness-success-listener.js","sourceRoot":"","sources":["../src/xyo-bridge-bound-witness-success-listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { IXyoNetworkProcedureCatalogue, CatalogueItem } from '@xyo-network/network';
|
|
2
|
-
export declare class XyoBrideProcedureCatalogue implements IXyoNetworkProcedureCatalogue {
|
|
3
|
-
private advertising;
|
|
4
|
-
constructor(advertising: CatalogueItem[]);
|
|
5
|
-
canDo(catalogueItem: CatalogueItem): boolean;
|
|
6
|
-
getCurrentCatalogue(): CatalogueItem[];
|
|
7
|
-
setCatalogue(catalogue: CatalogueItem[]): void;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=xyo-bridge-procedure-catalogue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xyo-bridge-procedure-catalogue.d.ts","sourceRoot":"","sources":["../src/xyo-bridge-procedure-catalogue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,aAAa,EAAuB,MAAM,sBAAsB,CAAA;AAExG,qBAAa,0BAA2B,YAAW,6BAA6B;IAElE,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,aAAa,EAAE;IAIzC,KAAK,CAAE,aAAa,EAAE,aAAa,GAAG,OAAO;IAgB7C,mBAAmB,IAAK,aAAa,EAAE;IAIvC,YAAY,CAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI;CAGvD"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const network_1 = require("@xyo-network/network");
|
|
4
|
-
class XyoBrideProcedureCatalogue {
|
|
5
|
-
constructor(advertising) {
|
|
6
|
-
this.advertising = advertising;
|
|
7
|
-
}
|
|
8
|
-
canDo(catalogueItem) {
|
|
9
|
-
if (catalogueItem === network_1.CatalogueItem.GIVE_ORIGIN_CHAIN) {
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
if (catalogueItem === network_1.CatalogueItem.TAKE_ORIGIN_CHAIN) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
if (catalogueItem === network_1.CatalogueItem.BOUND_WITNESS) {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
getCurrentCatalogue() {
|
|
21
|
-
return this.advertising;
|
|
22
|
-
}
|
|
23
|
-
setCatalogue(catalogue) {
|
|
24
|
-
throw Error("Bridge catalogue setting not supported");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.XyoBrideProcedureCatalogue = XyoBrideProcedureCatalogue;
|
|
28
|
-
//# sourceMappingURL=xyo-bridge-procedure-catalogue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xyo-bridge-procedure-catalogue.js","sourceRoot":"","sources":["../src/xyo-bridge-procedure-catalogue.ts"],"names":[],"mappings":";;AACA,kDAAwG;AAExG,MAAa,0BAA0B;IAErC,YAAoB,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAEhD,CAAC;IAEM,KAAK,CAAE,aAA4B;QACxC,IAAI,aAAa,KAAK,uBAAa,CAAC,iBAAiB,EAAE;YACrD,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,aAAa,KAAK,uBAAa,CAAC,iBAAiB,EAAE;YACrD,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,aAAa,KAAK,uBAAa,CAAC,aAAa,EAAE;YACjD,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,YAAY,CAAE,SAA0B;QAC7C,MAAM,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACvD,CAAC;CACF;AA7BD,gEA6BC"}
|
package/dist/xyo-bridge.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { IXyoNetworkProvider } from '@xyo-network/network';
|
|
2
|
-
import { XyoBridgeQueue, XyoBridgeOption } from '@xyo-network/bridge-queue-repository';
|
|
3
|
-
import { XyoBoundWitnessPayloadProvider } from '@xyo-network/peer-interaction';
|
|
4
|
-
import { XyoSimplePeerConnectionDelegate } from '@xyo-network/peer-connections';
|
|
5
|
-
import { IXyoBridgeConfig } from './@types';
|
|
6
|
-
export declare class XyoBridge {
|
|
7
|
-
private bridgeFromNetwork;
|
|
8
|
-
private bridgeToNetwork;
|
|
9
|
-
private bridgeConfig;
|
|
10
|
-
bridgeEveryN: number;
|
|
11
|
-
networkDelegate: XyoSimplePeerConnectionDelegate;
|
|
12
|
-
toNetworkDelegate: XyoSimplePeerConnectionDelegate;
|
|
13
|
-
bridgeQueue: XyoBridgeQueue;
|
|
14
|
-
bridgeOption: XyoBridgeOption;
|
|
15
|
-
payloadProvider: XyoBoundWitnessPayloadProvider;
|
|
16
|
-
private running;
|
|
17
|
-
private networkCatResolver;
|
|
18
|
-
private networkRouter;
|
|
19
|
-
private boundWitnessValidator;
|
|
20
|
-
private networkHandler;
|
|
21
|
-
private success;
|
|
22
|
-
private interactionFactory;
|
|
23
|
-
private standardBoundWitnessHandlerProvider;
|
|
24
|
-
constructor(bridgeFromNetwork: IXyoNetworkProvider, bridgeToNetwork: IXyoNetworkProvider, bridgeConfig: IXyoBridgeConfig);
|
|
25
|
-
mainBridgeLoop: () => Promise<void>;
|
|
26
|
-
init(): Promise<void>;
|
|
27
|
-
start(): void;
|
|
28
|
-
stop(): void;
|
|
29
|
-
private asyncLoop;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=xyo-bridge.d.ts.map
|
package/dist/xyo-bridge.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xyo-bridge.d.ts","sourceRoot":"","sources":["../src/xyo-bridge.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAsC,8BAA8B,EAAkC,MAAM,+BAA+B,CAAA;AAIlJ,OAAO,EAAE,+BAA+B,EAAmD,MAAM,+BAA+B,CAAA;AAChI,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,qBAAa,SAAS;IA8DR,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IA/DzB,YAAY,SAAK;IACjB,eAAe,EAAE,+BAA+B,CAAA;IAChD,iBAAiB,EAAE,+BAA+B,CAAA;IAClD,WAAW,iBAAwD;IAEnE,YAAY,kBAA+F;IAC3G,eAAe,iCAAuC;IAC7D,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,kBAAkB,CAiBzB;IAED,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,qBAAqB,CAAiC;IAE9D,OAAO,CAAC,cAAc,CAA4E;IAElG,OAAO,CAAC,OAAO,CAOd;IAED,OAAO,CAAC,kBAAkB,CASzB;IAED,OAAO,CAAC,mCAAmC,CAK1C;gBAEmB,iBAAiB,EAAE,mBAAmB,EACtC,eAAe,EAAE,mBAAmB,EACpC,YAAY,EAAE,gBAAgB;IA8B3C,cAAc,sBA6BpB;IAEY,IAAI;IA8BV,KAAK;IAKL,IAAI;YAIG,SAAS;CAKxB"}
|
package/dist/xyo-bridge.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const serializer_1 = require("@xyo-network/serializer");
|
|
12
|
-
const signing_ecdsa_1 = require("@xyo-network/signing.ecdsa");
|
|
13
|
-
const bound_witness_1 = require("@xyo-network/bound-witness");
|
|
14
|
-
const peer_interaction_handlers_1 = require("@xyo-network/peer-interaction-handlers");
|
|
15
|
-
const network_1 = require("@xyo-network/network");
|
|
16
|
-
const bridge_queue_repository_1 = require("@xyo-network/bridge-queue-repository");
|
|
17
|
-
const peer_interaction_1 = require("@xyo-network/peer-interaction");
|
|
18
|
-
const xyo_bridge_bound_witness_success_listener_1 = require("./xyo-bridge-bound-witness-success-listener");
|
|
19
|
-
const peer_interaction_router_1 = require("@xyo-network/peer-interaction-router");
|
|
20
|
-
const xyo_bridge_procedure_catalogue_1 = require("./xyo-bridge-procedure-catalogue");
|
|
21
|
-
const peer_connections_1 = require("@xyo-network/peer-connections");
|
|
22
|
-
class XyoBridge {
|
|
23
|
-
constructor(bridgeFromNetwork, bridgeToNetwork, bridgeConfig) {
|
|
24
|
-
this.bridgeFromNetwork = bridgeFromNetwork;
|
|
25
|
-
this.bridgeToNetwork = bridgeToNetwork;
|
|
26
|
-
this.bridgeConfig = bridgeConfig;
|
|
27
|
-
this.bridgeEveryN = 10;
|
|
28
|
-
this.bridgeQueue = new bridge_queue_repository_1.XyoBridgeQueue(this.bridgeConfig.bridgeQueueRepo);
|
|
29
|
-
this.bridgeOption = new bridge_queue_repository_1.XyoBridgeOption(this.bridgeConfig.blockRepo, this.bridgeQueue, this.bridgeConfig.hasher);
|
|
30
|
-
this.payloadProvider = new peer_interaction_1.XyoBoundWitnessPayloadProvider();
|
|
31
|
-
this.running = false;
|
|
32
|
-
this.networkCatResolver = {
|
|
33
|
-
resolveCategory: (catalogueItems) => {
|
|
34
|
-
for (const item of catalogueItems) {
|
|
35
|
-
if (item === network_1.CatalogueItem.GIVE_ORIGIN_CHAIN) {
|
|
36
|
-
return network_1.CatalogueItem.TAKE_ORIGIN_CHAIN;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
for (const item of catalogueItems) {
|
|
40
|
-
if (item === network_1.CatalogueItem.TAKE_ORIGIN_CHAIN) {
|
|
41
|
-
return network_1.CatalogueItem.GIVE_ORIGIN_CHAIN;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return network_1.CatalogueItem.BOUND_WITNESS;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
this.networkRouter = new peer_interaction_router_1.XyoPeerInteractionRouter();
|
|
48
|
-
this.boundWitnessValidator = new bound_witness_1.XyoBoundWitnessValidator();
|
|
49
|
-
this.networkHandler = new peer_connections_1.XyoPeerConnectionHandler(this.networkRouter, this.networkCatResolver);
|
|
50
|
-
this.success = new xyo_bridge_bound_witness_success_listener_1.XyoBridgeBoundWitnessSuccessListener(this.bridgeConfig.hasher, this.boundWitnessValidator, this.bridgeConfig.chainRepo, this.bridgeConfig.blockRepo, this.bridgeQueue, this.bridgeOption);
|
|
51
|
-
this.interactionFactory = {
|
|
52
|
-
newInstance: (signersForBoundWitness, payload) => {
|
|
53
|
-
return new peer_interaction_handlers_1.XyoBoundWitnessInteraction(signersForBoundWitness, payload, serializer_1.serializer, network_1.CatalogueItem.BOUND_WITNESS);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
this.standardBoundWitnessHandlerProvider = new peer_interaction_1.XyoBoundWitnessHandlerProvider(this.bridgeConfig.chainRepo, this.payloadProvider, this.success, this.interactionFactory);
|
|
57
|
-
this.mainBridgeLoop = () => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
this.bridgeConfig.logger.info(`Bridge on new cycle`);
|
|
59
|
-
try {
|
|
60
|
-
const blePipe = yield this.networkDelegate.provideConnection();
|
|
61
|
-
yield this.networkDelegate.handlePeerConnection(blePipe);
|
|
62
|
-
if ((yield this.bridgeConfig.chainRepo.getIndex()) % this.bridgeEveryN === 0) {
|
|
63
|
-
this.bridgeConfig.logger.info("Will try to bridge blocks");
|
|
64
|
-
const tcpPipe = yield this.toNetworkDelegate.provideConnection();
|
|
65
|
-
yield this.toNetworkDelegate.handlePeerConnection(tcpPipe);
|
|
66
|
-
yield tcpPipe.close();
|
|
67
|
-
const blocksToRemove = this.bridgeQueue.getBlocksToRemove();
|
|
68
|
-
for (const block of blocksToRemove) {
|
|
69
|
-
yield this.bridgeConfig.blockRepo.removeOriginBlock(block);
|
|
70
|
-
}
|
|
71
|
-
yield this.bridgeConfig.bridgeQueueRepo.commit();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
this.bridgeConfig.logger.error(`Uncaught error: ${error}`);
|
|
76
|
-
}
|
|
77
|
-
this.bridgeConfig.logger.info(`Bridge has block height: ${yield this.bridgeConfig.chainRepo.getIndex()}`);
|
|
78
|
-
});
|
|
79
|
-
const bridgeProcedureCatalogueCollect = new xyo_bridge_procedure_catalogue_1.XyoBrideProcedureCatalogue([
|
|
80
|
-
network_1.CatalogueItem.GIVE_ORIGIN_CHAIN,
|
|
81
|
-
network_1.CatalogueItem.TAKE_ORIGIN_CHAIN,
|
|
82
|
-
network_1.CatalogueItem.BOUND_WITNESS
|
|
83
|
-
]);
|
|
84
|
-
const bridgeProcedureCatalogueSend = new xyo_bridge_procedure_catalogue_1.XyoBrideProcedureCatalogue([
|
|
85
|
-
network_1.CatalogueItem.GIVE_ORIGIN_CHAIN,
|
|
86
|
-
network_1.CatalogueItem.TAKE_ORIGIN_CHAIN,
|
|
87
|
-
]);
|
|
88
|
-
this.networkDelegate = new peer_connections_1.XyoSimplePeerConnectionDelegate(bridgeFromNetwork, bridgeProcedureCatalogueCollect, this.networkHandler);
|
|
89
|
-
this.toNetworkDelegate = new peer_connections_1.XyoSimplePeerConnectionDelegate(bridgeToNetwork, bridgeProcedureCatalogueSend, this.networkHandler);
|
|
90
|
-
}
|
|
91
|
-
init() {
|
|
92
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
-
this.payloadProvider.addBoundWitnessOption(network_1.CatalogueItem.TAKE_ORIGIN_CHAIN, this.bridgeOption);
|
|
94
|
-
this.networkRouter.use(network_1.CatalogueItem.BOUND_WITNESS, () => {
|
|
95
|
-
return this.standardBoundWitnessHandlerProvider;
|
|
96
|
-
});
|
|
97
|
-
this.networkRouter.use(network_1.CatalogueItem.TAKE_ORIGIN_CHAIN, () => {
|
|
98
|
-
return this.standardBoundWitnessHandlerProvider;
|
|
99
|
-
});
|
|
100
|
-
this.networkRouter.use(network_1.CatalogueItem.GIVE_ORIGIN_CHAIN, () => {
|
|
101
|
-
return this.standardBoundWitnessHandlerProvider;
|
|
102
|
-
});
|
|
103
|
-
yield this.bridgeConfig.bridgeQueueRepo.restore();
|
|
104
|
-
if ((yield this.bridgeConfig.chainRepo.getIndex()) === 0) {
|
|
105
|
-
const newSigner = signing_ecdsa_1.getSignerProvider("secp256k1-sha256").newInstance();
|
|
106
|
-
this.bridgeConfig.logger
|
|
107
|
-
.info(`Creating first signer, has public key: ${newSigner.publicKey.getData().toString('hex')}`);
|
|
108
|
-
yield this.bridgeConfig.chainRepo.setCurrentSigners([newSigner]);
|
|
109
|
-
const boundWitness = yield this.bridgeConfig.chainRepo.createGenesisBlock();
|
|
110
|
-
this.success.onBoundWitnessSuccess(boundWitness, undefined, network_1.CatalogueItem.BOUND_WITNESS);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
start() {
|
|
115
|
-
this.running = true;
|
|
116
|
-
this.asyncLoop();
|
|
117
|
-
}
|
|
118
|
-
stop() {
|
|
119
|
-
this.running = false;
|
|
120
|
-
}
|
|
121
|
-
asyncLoop() {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
while (this.running) {
|
|
124
|
-
yield this.mainBridgeLoop();
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
exports.XyoBridge = XyoBridge;
|
|
130
|
-
//# sourceMappingURL=xyo-bridge.js.map
|
package/dist/xyo-bridge.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xyo-bridge.js","sourceRoot":"","sources":["../src/xyo-bridge.ts"],"names":[],"mappings":"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"}
|
package/src/@types/index.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { resolvers, IResolvers } from '@xyo-network/base-node'
|
|
2
|
-
import { IXyoHashProvider } from '@xyo-network/hashing'
|
|
3
|
-
import { IXyoStorageProvider } from '@xyo-network/storage'
|
|
4
|
-
import { IXyoBridgeQueueRepository } from '@xyo-network/bridge-queue-repository'
|
|
5
|
-
import { IXyoOriginBlockRepository } from '@xyo-network/origin-block-repository'
|
|
6
|
-
import { IXyoOriginChainRepository, XyoOriginChainLocalStorageRepository } from '../../../origin-chain/dist'
|
|
7
|
-
import { XyoLogger } from '@xyo-network/logger'
|
|
8
|
-
|
|
9
|
-
export interface IXyoBridgeConfig {
|
|
10
|
-
hasher: IXyoHashProvider
|
|
11
|
-
storageProvider: IXyoStorageProvider
|
|
12
|
-
bridgeQueueRepo: IXyoBridgeQueueRepository
|
|
13
|
-
blockRepo: IXyoOriginBlockRepository
|
|
14
|
-
chainRepo: XyoOriginChainLocalStorageRepository
|
|
15
|
-
logger: XyoLogger
|
|
16
|
-
}
|
package/src/app/index.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
// import { XyoLogger } from '@xyo-network/logger'
|
|
3
|
-
// import { XyoOriginBlockRepository } from '@xyo-network/origin-block-repository'
|
|
4
|
-
// import { XyoOriginChainLocalStorageRepository } from '@xyo-network/origin-chain'
|
|
5
|
-
// import { NobleScan } from '@xyo-network/ble.noble'
|
|
6
|
-
// import { serializer } from '@xyo-network/serializer'
|
|
7
|
-
// import { XyoBluetoothNetwork } from '@xyo-network/network.ble'
|
|
8
|
-
// import { XyoStorageBridgeQueueRepository } from '@xyo-network/bridge-queue-repository.keyvalue'
|
|
9
|
-
// import { XyoLevelDbStorageProvider } from '@xyo-network/storage.leveldb'
|
|
10
|
-
// import { getHashingProvider } from '@xyo-network/hashing'
|
|
11
|
-
// import { XyoClientTcpNetwork, IXyoNetworkAddressProvider, IXyoTCPNetworkAddress } from '@xyo-network/network.tcp'
|
|
12
|
-
// import { IXyoBridgeConfig } from '../@types'
|
|
13
|
-
// import { XyoBridge } from '../xyo-bridge'
|
|
14
|
-
|
|
15
|
-
// export const bridgeEntryPoint = async () => {
|
|
16
|
-
// const hasher = getHashingProvider('sha256')
|
|
17
|
-
// const scanner = new NobleScan()
|
|
18
|
-
// const bleNetwork = new XyoBluetoothNetwork(scanner)
|
|
19
|
-
// const storageProvider = new XyoLevelDbStorageProvider("./w4feef/")
|
|
20
|
-
// const bridgeQueueRepo = new XyoStorageBridgeQueueRepository(storageProvider)
|
|
21
|
-
// const blockRepo = new XyoOriginBlockRepository(storageProvider, serializer, hasher)
|
|
22
|
-
// const chainRepo = new XyoOriginChainLocalStorageRepository(storageProvider, blockRepo, serializer)
|
|
23
|
-
// const logger = new XyoLogger(false, false)
|
|
24
|
-
|
|
25
|
-
// const tcpPeers: IXyoNetworkAddressProvider = {
|
|
26
|
-
// next: async () => {
|
|
27
|
-
// const peer: IXyoTCPNetworkAddress = {
|
|
28
|
-
// host: "alpha-peers.xyo.network",
|
|
29
|
-
// port: 11000
|
|
30
|
-
// }
|
|
31
|
-
|
|
32
|
-
// return peer
|
|
33
|
-
// }
|
|
34
|
-
// }
|
|
35
|
-
// const tcpClient = new XyoClientTcpNetwork(tcpPeers)
|
|
36
|
-
|
|
37
|
-
// const bridgeConfig: IXyoBridgeConfig = {
|
|
38
|
-
// hasher,
|
|
39
|
-
// storageProvider,
|
|
40
|
-
// bridgeQueueRepo,
|
|
41
|
-
// blockRepo,
|
|
42
|
-
// chainRepo,
|
|
43
|
-
// logger
|
|
44
|
-
// }
|
|
45
|
-
|
|
46
|
-
// const bridge = new XyoBridge(bleNetwork, tcpClient, bridgeConfig)
|
|
47
|
-
|
|
48
|
-
// await bridge.init()
|
|
49
|
-
|
|
50
|
-
// setTimeout(() => {
|
|
51
|
-
// bridge.start()
|
|
52
|
-
// }, 2000)
|
|
53
|
-
// }
|
|
54
|
-
|
|
55
|
-
// bridgeEntryPoint()
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: XY | The Findables Company <ryanxyo>
|
|
3
|
-
* @Date: Thursday, 7th February 2019 11:32:52 am
|
|
4
|
-
* @Email: developer@xyfindables.com
|
|
5
|
-
* @Filename: xyo-bound-witness-success-listener.ts
|
|
6
|
-
* @Last modified by: ryanxyo
|
|
7
|
-
* @Last modified time: Thursday, 7th February 2019 11:33:33 am
|
|
8
|
-
* @License: All Rights Reserved
|
|
9
|
-
* @Copyright: Copyright XY | The Findables Company
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { IXyoBoundWitnessSuccessListener, XyoNestedBoundWitnessExtractor } from "@xyo-network/peer-interaction"
|
|
13
|
-
import { IXyoBoundWitness, XyoBoundWitnessValidator, XyoBoundWitness, XyoFetter, XyoWitness, XyoKeySet, XyoSignatureSet } from "@xyo-network/bound-witness"
|
|
14
|
-
import { XyoBase } from "@xyo-network/base"
|
|
15
|
-
import { IXyoHashProvider } from "@xyo-network/hashing"
|
|
16
|
-
import { IXyoOriginChainRepository, XyoBridgeBlockSet } from "@xyo-network/origin-chain"
|
|
17
|
-
import { IXyoOriginBlockRepository } from "@xyo-network/origin-block-repository"
|
|
18
|
-
import { CatalogueItem } from "@xyo-network/network"
|
|
19
|
-
import { IXyoSerializableObject } from '@xyo-network/serialization'
|
|
20
|
-
import { XyoBridgeQueue, XyoBridgeOption } from '@xyo-network/bridge-queue-repository'
|
|
21
|
-
|
|
22
|
-
export class XyoBridgeBoundWitnessSuccessListener extends XyoBase implements IXyoBoundWitnessSuccessListener {
|
|
23
|
-
|
|
24
|
-
constructor (
|
|
25
|
-
private readonly hashingProvider: IXyoHashProvider,
|
|
26
|
-
private readonly boundWitnessValidator: XyoBoundWitnessValidator,
|
|
27
|
-
private readonly originChainRepository: IXyoOriginChainRepository,
|
|
28
|
-
private readonly originBlockRepository: IXyoOriginBlockRepository,
|
|
29
|
-
private readonly bridgeQueue: XyoBridgeQueue,
|
|
30
|
-
private readonly bridgeOption: XyoBridgeOption
|
|
31
|
-
) {
|
|
32
|
-
super()
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public async onBoundWitnessSuccess(boundWitness: IXyoBoundWitness, mutex: any, choice: CatalogueItem): Promise<void> {
|
|
36
|
-
const hashValue = await this.hashingProvider.createHash(boundWitness.getSigningData())
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
await this.boundWitnessValidator.validateBoundWitness(hashValue, boundWitness)
|
|
40
|
-
} catch (err) {
|
|
41
|
-
this.logError(`Origin block failed validation. Will not add.`, err)
|
|
42
|
-
throw err
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
this.bridgeQueue.addQueueItem(hashValue.serialize())
|
|
46
|
-
|
|
47
|
-
const removedSubItemsBlock = this.removeSubBoundWitnesses(boundWitness)
|
|
48
|
-
|
|
49
|
-
await this.originBlockRepository.addOriginBlock(hashValue, removedSubItemsBlock)
|
|
50
|
-
|
|
51
|
-
await this.boundWitnessValidator.validateBoundWitness(hashValue, boundWitness)
|
|
52
|
-
await this.originChainRepository.updateOriginChainState(hashValue, removedSubItemsBlock, mutex)
|
|
53
|
-
|
|
54
|
-
this.logInfo(`${hashValue.serializeHex()} added to Origin-Chain and Origin-Block-Repository`)
|
|
55
|
-
const nestedBoundWitnesses = new XyoNestedBoundWitnessExtractor().extractNestedBoundWitnesses(boundWitness)
|
|
56
|
-
|
|
57
|
-
await nestedBoundWitnesses.reduce(async (promiseChain, nestedBoundWitness) => {
|
|
58
|
-
await promiseChain
|
|
59
|
-
const nestedHashValue = await this.hashingProvider.createHash(nestedBoundWitness.getSigningData())
|
|
60
|
-
const nestedHash = nestedHashValue.serialize() as Buffer
|
|
61
|
-
this.logInfo(`Extracted nested block with hash ${nestedHash.toString('hex')}`)
|
|
62
|
-
|
|
63
|
-
const containsBlock = await this.originBlockRepository.containsOriginBlock(nestedHash)
|
|
64
|
-
if (!containsBlock) {
|
|
65
|
-
try {
|
|
66
|
-
this.bridgeQueue.addQueueItem(nestedHash)
|
|
67
|
-
await this.boundWitnessValidator.validateBoundWitness(nestedHashValue, nestedBoundWitness)
|
|
68
|
-
} catch (err) {
|
|
69
|
-
this.logError(`Origin block failed validation. Will not add.`, err)
|
|
70
|
-
throw err
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
await this.originBlockRepository.addOriginBlock(nestedHashValue, nestedBoundWitness, hashValue)
|
|
74
|
-
}
|
|
75
|
-
}, Promise.resolve() as Promise<void>)
|
|
76
|
-
|
|
77
|
-
if (choice === CatalogueItem.TAKE_ORIGIN_CHAIN) {
|
|
78
|
-
this.bridgeOption.onCompleted()
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
private removeSubBoundWitnesses (boundWitness: IXyoBoundWitness): IXyoBoundWitness {
|
|
85
|
-
// tslint:disable-next-line:prefer-array-literal
|
|
86
|
-
const newBoundWitnessArray: Array<XyoFetter | XyoWitness> = []
|
|
87
|
-
|
|
88
|
-
boundWitness.fetterWitnesses.forEach((fOW) => {
|
|
89
|
-
if (fOW instanceof XyoWitness) {
|
|
90
|
-
const newItems: IXyoSerializableObject[] = []
|
|
91
|
-
const array = fOW.getData() as IXyoSerializableObject[]
|
|
92
|
-
|
|
93
|
-
array.forEach((item) => {
|
|
94
|
-
if (item.schemaObjectId !== XyoBridgeBlockSet.deserializer.schemaObjectId &&
|
|
95
|
-
item.schemaObjectId !== XyoSignatureSet.deserializer.schemaObjectId) {
|
|
96
|
-
newItems.push(item)
|
|
97
|
-
}
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
newBoundWitnessArray.push(new XyoWitness((fOW as XyoWitness).signatureSet, newItems))
|
|
101
|
-
} else if (fOW instanceof XyoFetter) {
|
|
102
|
-
newBoundWitnessArray.push(fOW as XyoFetter)
|
|
103
|
-
}
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
return new XyoBoundWitness(newBoundWitnessArray)
|
|
107
|
-
}
|
|
108
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { IXyoNetworkProcedureCatalogue, CatalogueItem, IXyoNetworkProvider } from '@xyo-network/network'
|
|
3
|
-
|
|
4
|
-
export class XyoBrideProcedureCatalogue implements IXyoNetworkProcedureCatalogue {
|
|
5
|
-
|
|
6
|
-
constructor(private advertising: CatalogueItem[]) {
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
public canDo (catalogueItem: CatalogueItem): boolean {
|
|
11
|
-
if (catalogueItem === CatalogueItem.GIVE_ORIGIN_CHAIN) {
|
|
12
|
-
return true
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (catalogueItem === CatalogueItem.TAKE_ORIGIN_CHAIN) {
|
|
16
|
-
return true
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (catalogueItem === CatalogueItem.BOUND_WITNESS) {
|
|
20
|
-
return true
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return false
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public getCurrentCatalogue (): CatalogueItem[] {
|
|
27
|
-
return this.advertising
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public setCatalogue (catalogue: CatalogueItem[]): void {
|
|
31
|
-
throw Error("Bridge catalogue setting not supported")
|
|
32
|
-
}
|
|
33
|
-
}
|