@xyo-network/bridge 0.40.0 → 2.32.0-rc.1

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.
Files changed (105) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +67 -8
  3. package/dist/cjs/Bridge.d.ts +10 -0
  4. package/dist/cjs/Bridge.d.ts.map +1 -0
  5. package/dist/{@types/index.js → cjs/Bridge.js} +1 -1
  6. package/dist/cjs/Bridge.js.map +1 -0
  7. package/dist/cjs/Config.d.ts +6 -0
  8. package/dist/cjs/Config.d.ts.map +1 -0
  9. package/dist/cjs/Config.js +5 -0
  10. package/dist/cjs/Config.js.map +1 -0
  11. package/dist/cjs/Queries/Connect.d.ts +8 -0
  12. package/dist/cjs/Queries/Connect.d.ts.map +1 -0
  13. package/dist/cjs/Queries/Connect.js +5 -0
  14. package/dist/cjs/Queries/Connect.js.map +1 -0
  15. package/dist/cjs/Queries/Disconnect.d.ts +8 -0
  16. package/dist/cjs/Queries/Disconnect.d.ts.map +1 -0
  17. package/dist/cjs/Queries/Disconnect.js +5 -0
  18. package/dist/cjs/Queries/Disconnect.js.map +1 -0
  19. package/dist/cjs/Queries/index.d.ts +7 -0
  20. package/dist/cjs/Queries/index.d.ts.map +1 -0
  21. package/dist/cjs/Queries/index.js +6 -0
  22. package/dist/cjs/Queries/index.js.map +1 -0
  23. package/dist/cjs/XyoBridge.d.ts +14 -0
  24. package/dist/cjs/XyoBridge.d.ts.map +1 -0
  25. package/dist/cjs/XyoBridge.js +34 -0
  26. package/dist/cjs/XyoBridge.js.map +1 -0
  27. package/dist/cjs/XyoBridgeWrapper.d.ts +7 -0
  28. package/dist/cjs/XyoBridgeWrapper.d.ts.map +1 -0
  29. package/dist/cjs/XyoBridgeWrapper.js +24 -0
  30. package/dist/cjs/XyoBridgeWrapper.js.map +1 -0
  31. package/dist/cjs/index.d.ts +5 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +8 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/docs.json +3803 -0
  36. package/dist/esm/Bridge.d.ts +10 -0
  37. package/dist/esm/Bridge.d.ts.map +1 -0
  38. package/dist/esm/Bridge.js +2 -0
  39. package/dist/esm/Bridge.js.map +1 -0
  40. package/dist/esm/Config.d.ts +6 -0
  41. package/dist/esm/Config.d.ts.map +1 -0
  42. package/dist/esm/Config.js +2 -0
  43. package/dist/esm/Config.js.map +1 -0
  44. package/dist/esm/Queries/Connect.d.ts +8 -0
  45. package/dist/esm/Queries/Connect.d.ts.map +1 -0
  46. package/dist/esm/Queries/Connect.js +2 -0
  47. package/dist/esm/Queries/Connect.js.map +1 -0
  48. package/dist/esm/Queries/Disconnect.d.ts +8 -0
  49. package/dist/esm/Queries/Disconnect.d.ts.map +1 -0
  50. package/dist/esm/Queries/Disconnect.js +2 -0
  51. package/dist/esm/Queries/Disconnect.js.map +1 -0
  52. package/dist/esm/Queries/index.d.ts +7 -0
  53. package/dist/esm/Queries/index.d.ts.map +1 -0
  54. package/dist/esm/Queries/index.js +3 -0
  55. package/dist/esm/Queries/index.js.map +1 -0
  56. package/dist/esm/XyoBridge.d.ts +14 -0
  57. package/dist/esm/XyoBridge.d.ts.map +1 -0
  58. package/dist/esm/XyoBridge.js +24 -0
  59. package/dist/esm/XyoBridge.js.map +1 -0
  60. package/dist/esm/XyoBridgeWrapper.d.ts +7 -0
  61. package/dist/esm/XyoBridgeWrapper.d.ts.map +1 -0
  62. package/dist/esm/XyoBridgeWrapper.js +15 -0
  63. package/dist/esm/XyoBridgeWrapper.js.map +1 -0
  64. package/dist/esm/index.d.ts +5 -0
  65. package/dist/esm/index.d.ts.map +1 -0
  66. package/dist/esm/index.js +5 -0
  67. package/dist/esm/index.js.map +1 -0
  68. package/package.json +49 -42
  69. package/src/Bridge.ts +11 -0
  70. package/src/Config.ts +7 -0
  71. package/src/Queries/Connect.ts +9 -0
  72. package/src/Queries/Disconnect.ts +9 -0
  73. package/src/Queries/index.ts +9 -0
  74. package/src/XyoBridge.ts +37 -0
  75. package/src/XyoBridgeWrapper.ts +18 -0
  76. package/src/index.ts +4 -2
  77. package/dist/@types/index.d.ts +0 -15
  78. package/dist/@types/index.d.ts.map +0 -1
  79. package/dist/@types/index.js.map +0 -1
  80. package/dist/app/index.d.ts +0 -1
  81. package/dist/app/index.d.ts.map +0 -1
  82. package/dist/app/index.js +0 -48
  83. package/dist/app/index.js.map +0 -1
  84. package/dist/index.d.ts +0 -3
  85. package/dist/index.d.ts.map +0 -1
  86. package/dist/index.js +0 -5
  87. package/dist/index.js.map +0 -1
  88. package/dist/xyo-bridge-bound-witness-success-listener.d.ts +0 -20
  89. package/dist/xyo-bridge-bound-witness-success-listener.d.ts.map +0 -1
  90. package/dist/xyo-bridge-bound-witness-success-listener.js +0 -100
  91. package/dist/xyo-bridge-bound-witness-success-listener.js.map +0 -1
  92. package/dist/xyo-bridge-procedure-catalogue.d.ts +0 -9
  93. package/dist/xyo-bridge-procedure-catalogue.d.ts.map +0 -1
  94. package/dist/xyo-bridge-procedure-catalogue.js +0 -28
  95. package/dist/xyo-bridge-procedure-catalogue.js.map +0 -1
  96. package/dist/xyo-bridge.d.ts +0 -31
  97. package/dist/xyo-bridge.d.ts.map +0 -1
  98. package/dist/xyo-bridge.js +0 -130
  99. package/dist/xyo-bridge.js.map +0 -1
  100. package/src/@types/index.ts +0 -16
  101. package/src/app/index.ts +0 -55
  102. package/src/xyo-bridge-bound-witness-success-listener.ts +0 -108
  103. package/src/xyo-bridge-procedure-catalogue.ts +0 -33
  104. package/src/xyo-bridge.ts +0 -184
  105. package/tsconfig.json +0 -31
package/src/xyo-bridge.ts DELETED
@@ -1,184 +0,0 @@
1
-
2
- import { serializer } from '@xyo-network/serializer'
3
- import { getSignerProvider } from '@xyo-network/signing.ecdsa'
4
- import { XyoBoundWitnessValidator } from '@xyo-network/bound-witness'
5
- import { XyoBoundWitnessInteraction } from '@xyo-network/peer-interaction-handlers'
6
- import { CatalogueItem, IXyoNetworkProvider } from '@xyo-network/network'
7
- import { XyoBridgeQueue, XyoBridgeOption } from '@xyo-network/bridge-queue-repository'
8
- import { IXyoBoundWitnessInteractionFactory, XyoBoundWitnessPayloadProvider, XyoBoundWitnessHandlerProvider } from '@xyo-network/peer-interaction'
9
- import { XyoBridgeBoundWitnessSuccessListener } from './xyo-bridge-bound-witness-success-listener'
10
- import { XyoPeerInteractionRouter } from '@xyo-network/peer-interaction-router'
11
- import { XyoBrideProcedureCatalogue } from './xyo-bridge-procedure-catalogue'
12
- import { XyoSimplePeerConnectionDelegate, XyoPeerConnectionHandler, IXyoCatalogueResolver } from '@xyo-network/peer-connections'
13
- import { IXyoBridgeConfig } from './@types'
14
-
15
- export class XyoBridge {
16
- public bridgeEveryN = 10
17
- public networkDelegate: XyoSimplePeerConnectionDelegate
18
- public toNetworkDelegate: XyoSimplePeerConnectionDelegate
19
- public bridgeQueue = new XyoBridgeQueue(this.bridgeConfig.bridgeQueueRepo)
20
-
21
- public bridgeOption = new XyoBridgeOption(this.bridgeConfig.blockRepo, this.bridgeQueue, this.bridgeConfig.hasher)
22
- public payloadProvider = new XyoBoundWitnessPayloadProvider()
23
- private running = false
24
-
25
- private networkCatResolver: IXyoCatalogueResolver = {
26
- resolveCategory: (catalogueItems: CatalogueItem[]): CatalogueItem | undefined => {
27
-
28
- for (const item of catalogueItems) {
29
- if (item === CatalogueItem.GIVE_ORIGIN_CHAIN) {
30
- return CatalogueItem.TAKE_ORIGIN_CHAIN
31
- }
32
- }
33
-
34
- for (const item of catalogueItems) {
35
- if (item === CatalogueItem.TAKE_ORIGIN_CHAIN) {
36
- return CatalogueItem.GIVE_ORIGIN_CHAIN
37
- }
38
- }
39
-
40
- return CatalogueItem.BOUND_WITNESS
41
- }
42
- }
43
-
44
- private networkRouter = new XyoPeerInteractionRouter()
45
-
46
- private boundWitnessValidator = new XyoBoundWitnessValidator()
47
-
48
- private networkHandler = new XyoPeerConnectionHandler(this.networkRouter, this.networkCatResolver)
49
-
50
- private success = new XyoBridgeBoundWitnessSuccessListener(
51
- this.bridgeConfig.hasher,
52
- this.boundWitnessValidator,
53
- this.bridgeConfig.chainRepo,
54
- this.bridgeConfig.blockRepo,
55
- this.bridgeQueue,
56
- this.bridgeOption
57
- )
58
-
59
- private interactionFactory: IXyoBoundWitnessInteractionFactory = {
60
- newInstance: (signersForBoundWitness, payload) => {
61
- return new XyoBoundWitnessInteraction(
62
- signersForBoundWitness,
63
- payload,
64
- serializer,
65
- CatalogueItem.BOUND_WITNESS
66
- )
67
- }
68
- }
69
-
70
- private standardBoundWitnessHandlerProvider = new XyoBoundWitnessHandlerProvider(
71
- this.bridgeConfig.chainRepo,
72
- this.payloadProvider,
73
- this.success,
74
- this.interactionFactory
75
- )
76
-
77
- constructor(private bridgeFromNetwork: IXyoNetworkProvider,
78
- private bridgeToNetwork: IXyoNetworkProvider,
79
- private bridgeConfig: IXyoBridgeConfig) {
80
-
81
- const bridgeProcedureCatalogueCollect = new XyoBrideProcedureCatalogue(
82
- [
83
- CatalogueItem.GIVE_ORIGIN_CHAIN,
84
- CatalogueItem.TAKE_ORIGIN_CHAIN,
85
- CatalogueItem.BOUND_WITNESS
86
- ]
87
- )
88
-
89
- const bridgeProcedureCatalogueSend = new XyoBrideProcedureCatalogue(
90
- [
91
- CatalogueItem.GIVE_ORIGIN_CHAIN,
92
- CatalogueItem.TAKE_ORIGIN_CHAIN,
93
- ]
94
- )
95
-
96
- this.networkDelegate = new XyoSimplePeerConnectionDelegate(
97
- bridgeFromNetwork,
98
- bridgeProcedureCatalogueCollect,
99
- this.networkHandler
100
- )
101
-
102
- this.toNetworkDelegate = new XyoSimplePeerConnectionDelegate(
103
- bridgeToNetwork,
104
- bridgeProcedureCatalogueSend,
105
- this.networkHandler
106
- )
107
- }
108
-
109
- public mainBridgeLoop = async () => {
110
- this.bridgeConfig.logger.info(`Bridge on new cycle`)
111
-
112
- try {
113
- const blePipe = await this.networkDelegate.provideConnection()
114
- await this.networkDelegate.handlePeerConnection(blePipe)
115
-
116
- if (await this.bridgeConfig.chainRepo.getIndex() % this.bridgeEveryN === 0) {
117
- this.bridgeConfig.logger.info("Will try to bridge blocks")
118
-
119
- const tcpPipe = await this.toNetworkDelegate.provideConnection()
120
- await this.toNetworkDelegate.handlePeerConnection(tcpPipe)
121
- await tcpPipe.close()
122
-
123
- const blocksToRemove = this.bridgeQueue.getBlocksToRemove()
124
-
125
- for (const block of blocksToRemove) {
126
- await this.bridgeConfig.blockRepo.removeOriginBlock(block)
127
- }
128
-
129
- await this.bridgeConfig.bridgeQueueRepo.commit()
130
- }
131
-
132
- } catch (error) {
133
- this.bridgeConfig.logger.error(`Uncaught error: ${error}`)
134
- }
135
-
136
- this.bridgeConfig.logger.info(`Bridge has block height: ${await this.bridgeConfig.chainRepo.getIndex()}`)
137
-
138
- }
139
-
140
- public async init() {
141
- this.payloadProvider.addBoundWitnessOption(CatalogueItem.TAKE_ORIGIN_CHAIN, this.bridgeOption)
142
-
143
- this.networkRouter.use(CatalogueItem.BOUND_WITNESS, () => {
144
- return this.standardBoundWitnessHandlerProvider
145
- })
146
-
147
- this.networkRouter.use(CatalogueItem.TAKE_ORIGIN_CHAIN, () => {
148
- return this.standardBoundWitnessHandlerProvider
149
- })
150
-
151
- this.networkRouter.use(CatalogueItem.GIVE_ORIGIN_CHAIN, () => {
152
- return this.standardBoundWitnessHandlerProvider
153
- })
154
-
155
- await this.bridgeConfig.bridgeQueueRepo.restore()
156
-
157
- if (await this.bridgeConfig.chainRepo.getIndex() === 0) {
158
- const newSigner = getSignerProvider("secp256k1-sha256").newInstance()
159
-
160
- this.bridgeConfig.logger
161
- .info(`Creating first signer, has public key: ${newSigner.publicKey.getData().toString('hex')}`)
162
-
163
- await this.bridgeConfig.chainRepo.setCurrentSigners([newSigner])
164
- const boundWitness = await this.bridgeConfig.chainRepo.createGenesisBlock()
165
-
166
- this.success.onBoundWitnessSuccess(boundWitness, undefined, CatalogueItem.BOUND_WITNESS)
167
- }
168
- }
169
-
170
- public start () {
171
- this.running = true
172
- this.asyncLoop()
173
- }
174
-
175
- public stop () {
176
- this.running = false
177
- }
178
-
179
- private async asyncLoop () {
180
- while (this.running) {
181
- await this.mainBridgeLoop()
182
- }
183
- }
184
- }
package/tsconfig.json DELETED
@@ -1,31 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es6",
4
- "module": "commonjs",
5
- "lib": ["esnext"],
6
- "declaration": true,
7
- "declarationMap": true,
8
- "sourceMap": true,
9
- "strict": true,
10
- "composite": true,
11
- "esModuleInterop": true,
12
- "noImplicitAny": true,
13
- "moduleResolution": "node",
14
- "outDir": "dist",
15
- "rootDir": "src"
16
- },
17
- "exclude": [
18
- "node_modules",
19
- "src/**/test/*",
20
- "src/**/spec",
21
- "src/**/*.spec.ts"
22
- ],
23
- "include": ["src/**/*", "app/index.ts"],
24
- "references": [
25
- {"path": "../network.ble"},
26
- {"path": "../peer-interaction"},
27
- {"path": "../peer-interaction-handlers"},
28
- {"path": "../bridge-queue-repository"},
29
- {"path": "../bridge-queue-repository.keyvalue"}
30
- ]
31
- }