opportunity-service 0.0.531 → 0.0.538

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. package/dist/OpportunityService.js +16 -20
  2. package/dist/OpportunityService.js.map +1 -1
  3. package/dist/api/dispute/check-vote-results.js +33 -0
  4. package/dist/api/dispute/check-vote-results.js.map +1 -0
  5. package/dist/api/dispute/connect.js +39 -0
  6. package/dist/api/dispute/connect.js.map +1 -0
  7. package/dist/api/dispute/ensure-entity-metadata.js +39 -0
  8. package/dist/api/dispute/ensure-entity-metadata.js.map +1 -0
  9. package/dist/api/dispute/launch-new-vote.js +94 -0
  10. package/dist/api/dispute/launch-new-vote.js.map +1 -0
  11. package/dist/api/dispute/submit-vote.js +41 -0
  12. package/dist/api/dispute/submit-vote.js.map +1 -0
  13. package/dist/api/dispute/util/wait-until-present.js +27 -0
  14. package/dist/api/dispute/util/wait-until-present.js.map +1 -0
  15. package/dist/api/{voting/connect.js → dispute/util/wait-until-started.js} +11 -21
  16. package/dist/api/dispute/util/wait-until-started.js.map +1 -0
  17. package/dist/api/exchange/create-dispute.js +1 -2
  18. package/dist/api/exchange/create-dispute.js.map +1 -1
  19. package/dist/api/exchange/create-task.js +1 -1
  20. package/dist/api/exchange/create-task.js.map +1 -1
  21. package/dist/api/identity/register-new-user.js +11 -2
  22. package/dist/api/identity/register-new-user.js.map +1 -1
  23. package/dist/api/index.js +31 -2
  24. package/dist/api/index.js.map +1 -1
  25. package/dist/api/internal/abis.js +2 -1
  26. package/dist/api/internal/abis.js.map +1 -1
  27. package/dist/api/internal/addresses.js +21 -4
  28. package/dist/api/internal/addresses.js.map +1 -1
  29. package/dist/api/other/create-eth-crypto-creds.js +20 -0
  30. package/dist/api/other/create-eth-crypto-creds.js.map +1 -0
  31. package/dist/api/provider/decrypt.js +18 -0
  32. package/dist/api/provider/decrypt.js.map +1 -0
  33. package/dist/api/provider/encrypt.js +18 -0
  34. package/dist/api/provider/encrypt.js.map +1 -0
  35. package/dist/api/util/encrypt-by-public-key.js +52 -0
  36. package/dist/api/util/encrypt-by-public-key.js.map +1 -0
  37. package/dist/api/util/parse-cipher.js +11 -0
  38. package/dist/api/util/parse-cipher.js.map +1 -0
  39. package/dist/api/util/stringify-cipher.js +5 -0
  40. package/dist/api/util/stringify-cipher.js.map +1 -0
  41. package/dist/blockchain/abi.json +833 -162
  42. package/dist/blockchain/addresses.json +15 -5
  43. package/dist/blockchain/bytecode.json +2 -2
  44. package/dist/constants.js +0 -1
  45. package/dist/constants.js.map +1 -1
  46. package/dist/modules/storage/OpportunityStorageProvider.js +65 -41
  47. package/dist/modules/storage/OpportunityStorageProvider.js.map +1 -1
  48. package/dist/sync/sync-markets.js +1 -1
  49. package/dist/sync/sync-markets.js.map +1 -1
  50. package/package.json +13 -2
  51. package/src/OpportunityService.ts +22 -24
  52. package/src/api/dispute/check-vote-results.ts +30 -0
  53. package/src/api/dispute/connect.ts +36 -0
  54. package/src/api/dispute/ensure-entity-metadata.ts +34 -0
  55. package/src/api/dispute/launch-new-vote.ts +116 -0
  56. package/src/api/dispute/submit-vote.ts +59 -0
  57. package/src/api/dispute/util/wait-until-present.ts +19 -0
  58. package/src/api/dispute/util/wait-until-started.ts +14 -0
  59. package/src/api/exchange/create-dispute.ts +1 -1
  60. package/src/api/exchange/create-task.ts +1 -1
  61. package/src/api/identity/register-new-user.ts +13 -2
  62. package/src/api/index.ts +31 -2
  63. package/src/api/internal/abis.ts +2 -1
  64. package/src/api/internal/addresses.ts +21 -4
  65. package/src/api/other/create-eth-crypto-creds.ts +14 -0
  66. package/src/api/provider/decrypt.ts +9 -0
  67. package/src/api/provider/encrypt.ts +9 -0
  68. package/src/api/util/encrypt-by-public-key.ts +47 -0
  69. package/src/api/util/parse-cipher.ts +11 -0
  70. package/src/api/util/stringify-cipher.ts +5 -0
  71. package/src/blockchain/abi.json +833 -162
  72. package/src/blockchain/addresses.json +17 -5
  73. package/src/blockchain/bytecode.json +2 -2
  74. package/src/constants.ts +0 -1
  75. package/src/modules/storage/OpportunityStorageProvider.ts +75 -23
  76. package/src/sync/sync-markets.ts +1 -1
  77. package/src/types.ts +21 -1
  78. package/dist/api/voting/census.js +0 -38
  79. package/dist/api/voting/census.js.map +0 -1
  80. package/dist/api/voting/connect.js.map +0 -1
  81. package/dist/api/voting/entity.js +0 -39
  82. package/dist/api/voting/entity.js.map +0 -1
  83. package/dist/api/voting/process.js +0 -101
  84. package/dist/api/voting/process.js.map +0 -1
  85. package/src/api/voting/census.ts +0 -39
  86. package/src/api/voting/connect.ts +0 -34
  87. package/src/api/voting/entity.ts +0 -33
  88. package/src/api/voting/process.ts +0 -119
@@ -1,7 +1,17 @@
1
1
  {
2
- "MarketFactory": "0x8eb065482F681537e90eab826540E9DF8D8cBd89",
3
- "UserRegistration": "0xc4F1B570e57A5035a25035AFA5f7CbA204627024",
4
- "UserSummaryFactory": "",
5
- "Dai": "0x6b175474e89094c44da98b954eedeac495271d0f",
6
- "Scheduler": "0x"
2
+ "rinkeby": {
3
+ "MarketFactory": "0x2918CfF61AFFA820D244860Ab14D32aB78BCDD83",
4
+ "UserRegistration": "0xE4c3a2698e5e4F8BE58481eB923ADA73982BD94d",
5
+ "UserSummaryFactory": "0x72141925d0Cd8bC72Bea3A555976335341B1e7BF",
6
+ "Dai": "0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea",
7
+ "Participation": "0x95bFe6b12b89EBb87D6f2B854f2055Fc867Dbd50"
8
+ },
9
+ "mainnet": {
10
+ "MarketFactory": "0x8eb065482F681537e90eab826540E9DF8D8cBd89",
11
+ "UserRegistration": "0xc4F1B570e57A5035a25035AFA5f7CbA204627024",
12
+ "UserSummaryFactory": "",
13
+ "Dai": "0x6b175474e89094c44da98b954eedeac495271d0f",
14
+ "Tip": "0x"
15
+ },
16
+ "xdai": {}
7
17
  }
@@ -1,4 +1,4 @@
1
1
  {
2
- "WorkRelationship": "",
3
- "Scheduler": ""
2
+ "Dispute": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638e93d1d511610097578063d8025a8011610066578063d8025a801461027b578063eeabb1251461028e578063fc0e3d90146102a1578063ffe1ee9d146102a957600080fd5b80638e93d1d51461019e57806391b0d39a1461023a578063a3bef4d714610243578063a6430cc01461025057600080fd5b80633a4b66f1116100d35780633a4b66f11461015c5780634a60e34f1461016557806377e8fd9c1461016f5780637e291d851461017757600080fd5b80630b97bc86146100fa578063146ca531146101345780631712546614610153575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6003546101419060ff1681565b60405160ff909116815260200161012b565b61012160065481565b61012160025481565b61016d6102d0565b005b61016d61037e565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6101f76101ac366004610bfc565b6000602081905290815260409020805460018201546002909201546001600160a01b03909116919067ffffffffffffffff81169060ff600160401b8204811691600160481b90041685565b604080516001600160a01b039096168652602086019490945267ffffffffffffffff9092169284019290925290151560608301521515608082015260a00161012b565b61012160045481565b6005546101419060ff1681565b61026361025e366004610d24565b6103b7565b6040516001600160a01b03909116815260200161012b565b610121610289366004610cee565b6103e1565b61016d61029c366004610c3d565b610890565b61016d610b1d565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6004546102e09062093a80610e06565b600454141561037c5761037c600880546102f990610e43565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610e43565b80156103725780601f1061034757610100808354040283529160200191610372565b820191906000526020600020905b81548152906001019060200180831161035557829003601f168201915b5050505050610b36565b565b60095460009060ff16600381111561039857610398610e8e565b8160038111156103aa576103aa610e8e565b146103b457600080fd5b50565b600181815481106103c757600080fd5b6000918252602090912001546001600160a01b0316905081565b600954600090819060ff1660038111156103fd576103fd610e8e565b81600381111561040f5761040f610e8e565b1461041957600080fd5b60015460051161042857600080fd5b60075460408051632fe4c87f60e21b815290516001600160a01b0390921691600091839163bf9321fc9160048082019260209290919082900301818787803b15801561047357600080fd5b505af1158015610487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ab9190610c20565b9050806001600160a01b0316638fcbaf0c836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d9190610c20565b30893560208b0135600161054760608e0160408f01610d3d565b8d606001358e608001356040518963ffffffff1660e01b8152600401610574989796959493929190610d60565b600060405180830381600087803b15801561058e57600080fd5b505af11580156105a2573d6000803e3d6000fd5b50505050806001600160a01b031663f2d5d56b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ee57600080fd5b505afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610c20565b6002546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561066f57600080fd5b505af1158015610683573d6000803e3d6000fd5b50505050806001600160a01b0316638fcbaf0c836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cf57600080fd5b505afa1580156106e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107079190610c20565b306107148a356001610e06565b60208a0135600061072b60608d0160408e01610d3d565b8c606001358d608001356040518963ffffffff1660e01b8152600401610758989796959493929190610d60565b600060405180830381600087803b15801561077257600080fd5b505af1158015610786573d6000803e3d6000fd5b5050505061087e336040805160a0810182526000808252602080830182815283850183815260608501848152608086018581526001600160a01b03988916808752948690529685209551865498166001600160a01b03199889161786559151600186810191909155905160029095018054925196511515600160481b0269ff00000000000000000019971515600160401b0268ffffffffffffffffff1990941667ffffffffffffffff9790971696909617929092179590951693909317909255825480840184559290527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69091018054909216179055565b610886610bc5565b5050505092915050565b60095460019060ff1660038111156108aa576108aa610e8e565b8160038111156108bc576108bc610e8e565b146108c657600080fd5b60035460ff166001141561096f57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109625760405162461bcd60e51b815260206004820152602860248201527f54686520616767726573736f72206d757374207375626d6974207468652070726044820152671bd8d95cdcc81a5960c21b60648201526084015b60405180910390fd5b61096b82610b36565b5050565b60045461097f9062093a80610e06565b4210610989575050565b60075460408051638da5cb5b60e01b815290516001600160a01b03909216918291638da5cb5b916004808301926020929190829003018186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190610c20565b6001600160a01b0316336001600160a01b03161480610aa75750806001600160a01b0316634d547ada6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5a57600080fd5b505afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190610c20565b6001600160a01b0316336001600160a01b0316145b610b0f5760405162461bcd60e51b815260206004820152603360248201527f5468652070726f63657373206964206d75737420636f6d652066726f6d206f6e604482015272329037b3103a3432903234b9b83aba32b9399760691b6064820152608401610959565b610b1883610b36565b505050565b60095460039060ff168181111561039857610398610e8e565b6009805460ff1916905560405130907f46fc1bd3ab8e7cd05a86c7dcc134023832df6d2dc518df189e63b27c386673ad90600090a2600354610b7c9060ff166001610e1e565b60ff16306001600160a01b03167f21f2e1db10f4df2a0f1fc876844286ccb4dde456aeaf56b34084fe757c10192f8342604051610bba929190610da9565b60405180910390a350565b60015460009060051415610be1576009805460ff191660021790555b90565b600060a08284031215610bf657600080fd5b50919050565b600060208284031215610c0e57600080fd5b8135610c1981610eba565b9392505050565b600060208284031215610c3257600080fd5b8151610c1981610eba565b600060208284031215610c4f57600080fd5b813567ffffffffffffffff80821115610c6757600080fd5b818401915084601f830112610c7b57600080fd5b813581811115610c8d57610c8d610ea4565b604051601f8201601f19908116603f01168101908382118183101715610cb557610cb5610ea4565b81604052828152876020848701011115610cce57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806101408385031215610d0257600080fd5b610d0c8484610be4565b9150610d1b8460a08501610be4565b90509250929050565b600060208284031215610d3657600080fd5b5035919050565b600060208284031215610d4f57600080fd5b813560ff81168114610c1957600080fd5b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b604081526000835180604084015260005b81811015610dd75760208187018101516060868401015201610dba565b81811115610de9576000606083860101525b50602083019390935250601f91909101601f191601606001919050565b60008219821115610e1957610e19610e78565b500190565b600060ff821660ff84168060ff03821115610e3b57610e3b610e78565b019392505050565b600181811c90821680610e5757607f821691505b60208210811415610bf657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146103b457600080fdfea2646970667358221220e36760deb035eff2130e8ab72946509dd52d437feb2fb887714059c90eaa82e764736f6c63430008070033",
3
+ "WorkRelationship": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80637f755043116100de578063bfce14ea11610097578063ec3a479011610071578063ec3a4790146103c5578063ed8454fb146103d8578063f240f7c3146103eb578063f2a09497146103fe57600080fd5b8063bfce14ea14610363578063c6ee20d21461038a578063cb2ef6f7146103a457600080fd5b80637f755043146102e257806385209ee0146102f55780638da5cb5b146103075780639240a1001461031a57806396118e4414610334578063bf9321fc1461035b57600080fd5b80634d547ada1161014b57806353318a871161012557806353318a871461029b5780635db28c66146102ae57806363c852c9146102b65780637df38c5b146102d957600080fd5b80634d547ada146102365780634e12aa961461026157806350365be91461028857600080fd5b80630b73a87f14610193578063188bbbf3146101a85780631ed4b49e146101d157806331613fdb146101e657806339987e52146101ee5780633c86f6f314610201575b600080fd5b6101a66101a13660046117bf565b610406565b005b6007546101bb9062010000900460ff1681565b6040516101c89190611b80565b60405180910390f35b6101d96104ef565b6040516101c89190611bbb565b6101a661057d565b6101a66101fc366004611a99565b6106a4565b6102287ffa5e0016fb62b8dffda8fd95249d438edcffd3689b40ac3b4281d4cf710609ae81565b6040519081526020016101c8565b600054610249906001600160a01b031681565b6040516001600160a01b0390911681526020016101c8565b6102287fc35792dec8ea736e1a3478771b1f14a7472fd98ca01a9c9077ac63917f87f64981565b6101a6610296366004611961565b6107d5565b6101a66102a93660046119a7565b6108fe565b610228610a2c565b6102c96102c43660046118a9565b610a8a565b60405190151581526020016101c8565b61022860025481565b6101a66102f03660046117e3565b610b33565b6007546101bb90610100900460ff1681565b600154610249906001600160a01b031681565b610322600681565b60405160ff90911681526020016101c8565b6102287f62b607caa4d4e7fcbd31bf4c033cd30888b536567fadc83710fdf15f8d5cfc9e81565b610249610deb565b6102287f000000000000000000000000000000000000000000000000000000000000000081565b6007546103979060ff1681565b6040516101c89190611b93565b6007546103b8906301000000900460ff1681565b6040516101c89190611ba7565b6101a66103d33660046119cf565b610e56565b6101a66103e6366004611874565b610ed0565b600454610249906001600160a01b031681565b610322600481565b600754339060ff16600581111561041f5761041f611ec6565b600514801561043b57506004546001600160a01b038281169116145b6104605760405162461bcd60e51b815260040161045790611dd0565b60405180910390fd5b60035460025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482019290925291169063a9059cbb906044015b602060405180830381600087803b1580156104b257600080fd5b505af11580156104c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ea9190611944565b505050565b600580546104fc90611e75565b80601f016020809104026020016040519081016040528092919081815260200182805461052890611e75565b80156105755780601f1061054a57610100808354040283529160200191610575565b820191906000526020600020905b81548152906001019060200180831161055857829003601f168201915b505050505081565b600754339060ff16600581111561059657610596611ec6565b60051480156105b257506004546001600160a01b038281169116145b6105ce5760405162461bcd60e51b815260040161045790611dd0565b6000600280546105de9190611e53565b60035460015460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb90604401602060405180830381600087803b15801561063057600080fd5b505af1158015610644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106689190611944565b5060035460005460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401610498565b6001546001600160a01b031633146106ce5760405162461bcd60e51b815260040161045790611c10565b60038060075460ff1660058111156106e8576106e8611ec6565b146107055760405162461bcd60e51b815260040161045790611c93565b604080517ffa5e0016fb62b8dffda8fd95249d438edcffd3689b40ac3b4281d4cf710609ae602080830191909152871580158385015283518084038501815260608401855280519083012061190160f01b60808501527f0000000000000000000000000000000000000000000000000000000000000000608285015260a2808501919091528451808503909101815260c29093019093528151910120906107b5576107b08789610f1a565b6107cb565b600780546002919060ff19166001835b02179055505b5050505050505050565b6000546001600160a01b031633146107ff5760405162461bcd60e51b815260040161045790611c63565b600180600754610100900460ff16600281111561081e5761081e611ec6565b1461083b5760405162461bcd60e51b815260040161045790611d67565b60018060075460ff16600581111561085557610855611ec6565b146108725760405162461bcd60e51b815260040161045790611c93565b60018060075462010000900460ff16600281111561089257610892611ec6565b146108af5760405162461bcd60e51b815260040161045790611cfd565b600187151514156108d0576007805462ff00ff1916620200021790556108f5565b600080546001600160a01b03191690556108e8610f76565b6007805462ff00ff191690555b50505050505050565b6000546001600160a01b031633146109285760405162461bcd60e51b815260040161045790611c63565b60028060075460ff16600581111561094257610942611ec6565b1461095f5760405162461bcd60e51b815260040161045790611c93565b604080517f62b607caa4d4e7fcbd31bf4c033cd30888b536567fadc83710fdf15f8d5cfc9e60208083019190915281830188905282518083038401815260608301845280519082012061190160f01b60808401527f0000000000000000000000000000000000000000000000000000000000000000608284015260a2808401919091528351808403909101815260c290920190925280519101206000546001600160a01b0316610a0e57600080fd5b610a1786600655565b50506007805460ff1916600317905550505050565b6001546000906001600160a01b03163314610a595760405162461bcd60e51b815260040161045790611c10565b6000546001600160a01b03163314610a835760405162461bcd60e51b815260040161045790611c63565b5060065490565b6040805160016232dea960e11b0319815283516001600160a01b03908116600483015260208501516024830152918401516044820152828216606482015260009182919086169063ff9a42ae9060840160206040518083038186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2a9190611944565b95945050505050565b6001546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161045790611c10565b600080600754610100900460ff166002811115610b7c57610b7c611ec6565b14610b995760405162461bcd60e51b815260040161045790611d67565b60008060075460ff166005811115610bb357610bb3611ec6565b14610bd05760405162461bcd60e51b815260040161045790611c93565b6001600160a01b038c16610c4c5760405162461bcd60e51b815260206004820152603760248201527f576f726b65722061646472657373206d757374206e6f7420626520302077686560448201527f6e2061737369676e696e67206e657720776f726b65722e0000000000000000006064820152608401610457565b8a610c995760405162461bcd60e51b815260206004820181905260248201527f44616920616d6f756e742063616e6e6f7420626520657175616c20746f20302e6044820152606401610457565b6003546001546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a082319060240160206040518083038186803b158015610ce557600080fd5b505afa158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d9190611a80565b90508b811015610d2c57600080fd5b610d3c8b8b8b8b8b8b8b8b6110b8565b60028c9055600080546001600160a01b038f166001600160a01b031991821617909155600480549091169055600780546001919062ff0000191662010000830217905550600780546001919060ff1916828002179055506000546001600160a01b038e8116911614610db057610db0611eb0565b600160075462010000900460ff166002811115610dcf57610dcf611ec6565b14610ddc57610ddc611eb0565b50505050505050505050505050565b6003546000906001600160a01b0316610e465760405162461bcd60e51b815260206004820152601a60248201527f52657761726420616464726573732063616e6e6f7420626520300000000000006044820152606401610457565b506003546001600160a01b031690565b6001546001600160a01b03163314610e805760405162461bcd60e51b815260040161045790611c10565b60008060075462010000900460ff166002811115610ea057610ea0611ec6565b14610ebd5760405162461bcd60e51b815260040161045790611cfd565b81516104ea906005906020850190611726565b60028060075460ff166005811115610eea57610eea611ec6565b14610f075760405162461bcd60e51b815260040161045790611c93565b50506007805460ff191660051790555050565b6001546001600160a01b03163314610f445760405162461bcd60e51b815260040161045790611c10565b6000546001600160a01b0316610f5957600080fd5b610f638282611235565b50506007805461ffff1916610204179055565b6000546001600160a01b03163314610fa05760405162461bcd60e51b815260040161045790611c63565b60018060075462010000900460ff166002811115610fc057610fc0611ec6565b14610fdd5760405162461bcd60e51b815260040161045790611cfd565b60018060075460ff166005811115610ff757610ff7611ec6565b146110145760405162461bcd60e51b815260040161045790611c93565b6002546110795760405162461bcd60e51b815260206004820152602d60248201527f5468657265206973206e6f2044414920746f207472616e73666572206261636b60448201526c103a37903a34329037bbb732b960991b6064820152608401610457565b60035460015460025460405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291169063a9059cbb90604401610498565b600354600180546040516323f2ebc360e21b81526001600160a01b0393841693638fcbaf0c936110fb939091169130918e918e91908e908e908e90600401611b1b565b600060405180830381600087803b15801561111557600080fd5b505af1158015611129573d6000803e3d6000fd5b505060035460015460025460405163f2d5d56b60e01b81526001600160a01b03928316600482015260248101919091529116925063f2d5d56b9150604401600060405180830381600087803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b5050600354600180546001600160a01b039283169450638fcbaf0c93509091169030906111c3908d90611e2d565b8b60008989896040518963ffffffff1660e01b81526004016111ec989796959493929190611b1b565b600060405180830381600087803b15801561120657600080fd5b505af115801561121a573d6000803e3d6000fd5b5050600780546001935090915061ff001916610100836107c5565b60035460005460025460405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291169063a9059cbb90604401602060405180830381600087803b15801561128957600080fd5b505af115801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c19190611944565b50600154600080546001600160a01b03928316921690600660ff86161115611349576040516376267fd760e11b81526001600160a01b0383169063ec4cffae90611312903090600190600401611b64565b600060405180830381600087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b505050506116c6565b600660ff86161115806113605750600460ff861610155b1561136a576116c6565b600460ff86161180159061138b5750611384846001611e2d565b8160ff1610155b15611649576000826001600160a01b031663c897d6956040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113cd57600080fd5b505af11580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114059190611afe565b905060018160ff161161147857604051630668e3b760e41b81526001600160a01b0384169063668e3b7090611441903090600190600401611b64565b600060405180830381600087803b15801561145b57600080fd5b505af115801561146f573d6000803e3d6000fd5b50505050611643565b8060ff16600214156114ed57604051630668e3b760e41b81526000906001600160a01b0385169063668e3b70906114b59030908590600401611b64565b600060405180830381600087803b1580156114cf57600080fd5b505af11580156114e3573d6000803e3d6000fd5b5050505050611643565b8060ff166003141561158757604051630668e3b760e41b81526001600160a01b0384169063668e3b7090611528903090600090600401611b64565b600060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b50506040516332053e6960e01b8152600060048201526001600160a01b03861692506332053e699150602401611441565b6040516332053e6960e01b8152600160048201526001600160a01b038416906332053e6990602401600060405180830381600087803b1580156115c957600080fd5b505af11580156115dd573d6000803e3d6000fd5b5050604051630668e3b760e41b81526001600160a01b038616925063668e3b709150611610903090600190600401611b64565b600060405180830381600087803b15801561162a57600080fd5b505af115801561163e573d6000803e3d6000fd5b505050505b506116c6565b600460ff86161180159061165f5750838160ff16105b156116c657604051630668e3b760e41b81526001600160a01b0383169063668e3b7090611693903090600190600401611b64565b600060405180830381600087803b1580156116ad57600080fd5b505af11580156116c1573d6000803e3d6000fd5b505050505b604051633336dad960e21b81523060048201526001600160a01b0384169063ccdb6b6490602401600060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050505050505050565b82805461173290611e75565b90600052602060002090601f016020900481019282611754576000855561179a565b82601f1061176d57805160ff191683800117855561179a565b8280016001018555821561179a579182015b8281111561179a57825182559160200191906001019061177f565b506117a69291506117aa565b5090565b5b808211156117a657600081556001016117ab565b6000602082840312156117d157600080fd5b81356117dc81611f05565b9392505050565b6000806000806000806000806000806101408b8d03121561180357600080fd5b8a3561180e81611f05565b995060208b0135985060408b0135975060608b0135965060808b013561183381611f28565b955060a08b0135945060c08b0135935060e08b013561185181611f28565b809350506101008b013591506101208b013590509295989b9194979a5092959850565b60008060006060848603121561188957600080fd5b833561189481611f05565b95602085013595506040909401359392505050565b600080600083850360a08112156118bf57600080fd5b84356118ca81611f05565b93506060601f19820112156118de57600080fd5b506040516060810181811067ffffffffffffffff8211171561190257611902611edc565b604052602085013561191381611f05565b815260408581013560208301526060860135908201529150608084013561193981611f05565b809150509250925092565b60006020828403121561195657600080fd5b81516117dc81611f1a565b6000806000806080858703121561197757600080fd5b843561198281611f1a565b9350602085013561199281611f28565b93969395505050506040820135916060013590565b600080600080608085870312156119bd57600080fd5b84359350602085013561199281611f28565b6000602082840312156119e157600080fd5b813567ffffffffffffffff808211156119f957600080fd5b818401915084601f830112611a0d57600080fd5b813581811115611a1f57611a1f611edc565b604051601f8201601f19908116603f01168101908382118183101715611a4757611a47611edc565b81604052828152876020848701011115611a6057600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215611a9257600080fd5b5051919050565b60008060008060008060c08789031215611ab257600080fd5b863595506020870135611ac481611f28565b94506040870135611ad481611f1a565b93506060870135611ae481611f28565b9598949750929560808101359460a0909101359350915050565b600060208284031215611b1057600080fd5b81516117dc81611f28565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0392909216825260ff16602082015260400190565b60208101611b8d83611ef2565b91905290565b6020810160068310611b8d57611b8d611ec6565b6020810160028310611b8d57611b8d611ec6565b600060208083528351808285015260005b81811015611be857858101830151858201604001528201611bcc565b81811115611bfa576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526033908201527f576f726b52656c6174696f6e736869703a206f6e6c794f776e65722063616e2060408201527231b0b636103a3434b990333ab731ba34b7b71760691b606082015260800190565b602080825260169082015275576f726b52656c6174696f6e736869703a206f6e6c7960501b604082015260600190565b60208082526044908201527f5468697320616374696f6e2063616e6e6f742062652063617272696564206f7560408201527f7420756e646572207468652063757272656e7420636f6e7472616374207374616060820152633a3ab99760e11b608082015260a00190565b60208082526044908201527f43616e6e6f7420696e766f6b65207468697320657363726f772066756e63746960408201527f6f6e2077697468207468652063757272656e7420636f6e7472616374207374616060820152633a3ab99760e11b608082015260a00190565b60208082526043908201527f43616e6e6f7420696e766f6b65207468697320657363726f772066756e63746960408201527f6f6e2077697468207468652063757272656e7420636f6e7472616374207374616060820152623a329760e91b608082015260a00190565b60208082526037908201527f54686520636f6e74726163742063616e6e6f74206265207265736f6c7665642060408201527f756e64657220746865736520636f6e646974696f6e732e000000000000000000606082015260800190565b60008219821115611e4e57634e487b7160e01b600052601160045260246000fd5b500190565b600082611e7057634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680611e8957607f821691505b60208210811415611eaa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60038110611f0257611f02611ec6565b50565b6001600160a01b0381168114611f0257600080fd5b8015158114611f0257600080fd5b60ff81168114611f0257600080fdfea264697066735822122027624e7f435ac760348d3a66c1ed21ccd7fdfb4824992c920caddc2c2483c8b764736f6c63430008070033"
4
4
  }
package/dist/constants.js CHANGED
@@ -17,7 +17,6 @@ export var Contracts;
17
17
  Contracts["MARKET"] = "Market";
18
18
  Contracts["MARKET_FACTORY"] = "MarketFactory";
19
19
  Contracts["USER_REGISTRATION"] = "UserRegistration";
20
- Contracts["SCHEDULER"] = "Scheduler";
21
20
  })(Contracts || (Contracts = {}));
22
21
  export var ContractType;
23
22
  (function (ContractType) {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAE1B,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,eAAe;IACf,kBAAkB;IAClB,QAAQ;IACR,aAAa;IACb,oBAAoB;IACpB,kBAAkB;CACnB,CAAA;AAED,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,wBAAS,CAAA;IACT,mDAAoC,CAAA;IACpC,8BAAe,CAAA;IACf,6CAA8B,CAAA;IAC9B,mDAAoC,CAAA;IACpC,oCAAqB,CAAA;AACvB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAYD,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,mDAAM,CAAA;IACN,iDAAK,CAAA;AACP,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,IAAK,aAIJ;AAJD,WAAK,aAAa;IAChB,iFAAoB,CAAA;IACpB,yEAAgB,CAAA;IAChB,yDAAQ,CAAA;AACV,CAAC,EAJI,aAAa,KAAb,aAAa,QAIjB;AAYD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,aAAa,EAAE,CAAC,wFAAwF,CAAC;IACzG,WAAW,EAAE,CAAC,sFAAsF,CAAC;IACrG,SAAS,EAAE,CAAC;IACZ,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,UAAU,GAAG,IAA4B,CAAC,EAAE,uEAAuE;CAClI,CAAC;AAEF,YAAY;AACZ,MAAM,CAAN,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IACpC,iEAAmC,CAAA;AACrC,CAAC,EAFW,0BAA0B,KAA1B,0BAA0B,QAErC;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;AACjC,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,0CAA2B,CAAA;IAC3B,wCAAyB,CAAA;AAC3B,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+CAA6B,CAAA;IAC7B,mDAAiC,CAAA;AACnC,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,mDAAmC,CAAA;IACnC,uDAAuC,CAAA;IACvC,+CAA+B,CAAA;IAC/B,+EAA+D,CAAA;AACjE,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qEAAiD,CAAA;IACjD,mDAA+B,CAAA;AACjC,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,6CAA0B,CAAA;IAC1B,yCAAuB,CAAA;IACvB,iDAA8B,CAAA;AAChC,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,eAAe;AAEf,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,kDAAqB,CAAA;IACrB,gDAAmB,CAAA;IACnB,0CAAa,CAAA;AACf,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;AACf,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,cAAc;AAEd,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;AAE1B,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAE1B,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,eAAe;IACf,kBAAkB;IAClB,QAAQ;IACR,aAAa;IACb,oBAAoB;IACpB,kBAAkB;CACnB,CAAA;AAED,MAAM,CAAN,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,wBAAS,CAAA;IACT,mDAAoC,CAAA;IACpC,8BAAe,CAAA;IACf,6CAA8B,CAAA;IAC9B,mDAAoC,CAAA;AACtC,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB;AAYD,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,mDAAM,CAAA;IACN,iDAAK,CAAA;AACP,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,IAAK,aAIJ;AAJD,WAAK,aAAa;IAChB,iFAAoB,CAAA;IACpB,yEAAgB,CAAA;IAChB,yDAAQ,CAAA;AACV,CAAC,EAJI,aAAa,KAAb,aAAa,QAIjB;AAYD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,aAAa,EAAE,CAAC,wFAAwF,CAAC;IACzG,WAAW,EAAE,CAAC,sFAAsF,CAAC;IACrG,SAAS,EAAE,CAAC;IACZ,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,UAAU,GAAG,IAA4B,CAAC,EAAE,uEAAuE;CAClI,CAAC;AAEF,YAAY;AACZ,MAAM,CAAN,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IACpC,iEAAmC,CAAA;AACrC,CAAC,EAFW,0BAA0B,KAA1B,0BAA0B,QAErC;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;AACjC,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,0CAA2B,CAAA;IAC3B,wCAAyB,CAAA;AAC3B,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+CAA6B,CAAA;IAC7B,mDAAiC,CAAA;AACnC,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,mDAAmC,CAAA;IACnC,uDAAuC,CAAA;IACvC,+CAA+B,CAAA;IAC/B,+EAA+D,CAAA;AACjE,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qEAAiD,CAAA;IACjD,mDAA+B,CAAA;AACjC,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,6CAA0B,CAAA;IAC1B,yCAAuB,CAAA;IACvB,iDAA8B,CAAA;AAChC,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,eAAe;AAEf,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,kDAAqB,CAAA;IACrB,gDAAmB,CAAA;IACnB,0CAAa,CAAA;AACf,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;AACf,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,cAAc;AAEd,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;AAE1B,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB"}
@@ -7,58 +7,82 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- var __asyncValues = (this && this.__asyncValues) || function (o) {
11
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12
- var m = o[Symbol.asyncIterator], i;
13
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
14
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
15
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
16
- };
17
- import ipfsClient from 'ipfs-http-client';
10
+ import OrbitDB from 'orbit-db';
11
+ import IPFS from 'ipfs';
12
+ const operations = ['>', '<', '==', '>=', '<='];
18
13
  class OpportunityStorageProvider {
19
- constructor() {
20
- this.ipfsProvider = null;
21
- this.ipfsProvider = ipfsClient({ url: 'https://ipfs.infura.io', protocol: 'https', port: 5001, apiPath: '/ipfs/api/v0' });
22
- }
23
- storeContent(content) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const { cid } = yield this.ipfsProvider.add(content);
26
- console.log(`OpportunityStorageProvider: Upload content with CID (${cid})`);
27
- return cid;
14
+ constructor(address) {
15
+ // Create IPFS instance
16
+ this.initIPFSInstance = () => __awaiter(this, void 0, void 0, function* () {
17
+ return yield IPFS.create({ repo: "/opportunity/ipfs" });
28
18
  });
19
+ this.initIPFSInstance();
20
+ this.listen(address);
21
+ }
22
+ listen(address) {
23
+ this.initIPFSInstance().then((ipfs) => __awaiter(this, void 0, void 0, function* () {
24
+ const orbitdb = yield OrbitDB.createInstance(ipfs);
25
+ // Create / Open a database
26
+ this.db = yield orbitdb.docs(address);
27
+ this.db.load();
28
+ // Listen for updates from peers
29
+ this.db.events.on("replicated", address => {
30
+ console.log(this.db.iterator({ limit: -1 }).collect());
31
+ });
32
+ // Add an entry
33
+ const hash = yield this.db.add("world");
34
+ console.log(hash);
35
+ // Query
36
+ const result = this.db.iterator({ limit: -1 }).collect();
37
+ console.log(JSON.stringify(result, null, 2));
38
+ }));
29
39
  }
30
- storeRawContent(content) {
40
+ /**
41
+ * Returns a Promise that resolves to the multihash of the entry as a String.
42
+ * @param doc
43
+ * @returns
44
+ */
45
+ store(doc) {
31
46
  return __awaiter(this, void 0, void 0, function* () {
32
- const parsedContent = JSON.stringify(content);
33
- const cid = yield this.ipfsProvider.add(parsedContent);
34
- console.log('Storage Provider: ' + 'Storing raw content with cid: ' + cid);
47
+ try {
48
+ const hash = yield this.db.put(doc).then(hash => {
49
+ return hash;
50
+ });
51
+ return hash;
52
+ }
53
+ catch (error) {
54
+ console.log(error);
55
+ return '';
56
+ }
35
57
  });
36
58
  }
37
- retrieveContent(cid) {
38
- var e_1, _a;
59
+ /**
60
+ * Returns an Array of all Objects that match the given key in their _id field or the field specified by indexBy. If no document with
61
+ * that key exists, this returns an empty array.
62
+ * @param key
63
+ */
64
+ retrieveDoc(key = '', collection) {
39
65
  return __awaiter(this, void 0, void 0, function* () {
40
- const file = this.ipfsProvider.get(cid);
41
- console.log(file.type, file.path);
42
- if (!file.content)
43
- return -1;
44
- const content = [];
45
66
  try {
46
- for (var _b = __asyncValues(file.content), _c; _c = yield _b.next(), !_c.done;) {
47
- const chunk = _c.value;
48
- content.push(chunk);
49
- }
67
+ const docs = yield this.db.get(key);
68
+ return docs;
50
69
  }
51
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
52
- finally {
53
- try {
54
- if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
55
- }
56
- finally { if (e_1) throw e_1.error; }
70
+ catch (error) {
71
+ console.log(error);
72
+ return [];
57
73
  }
58
- console.log('Returning content from storage provider: ' + content);
74
+ });
75
+ }
76
+ retrieveDocsByCollection(collection) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ return yield this.db.query((doc) => doc[collection] == collection);
79
+ });
80
+ }
81
+ deleteDoc(key) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const hash = yield this.db.del(key);
59
84
  });
60
85
  }
61
86
  }
62
- const opportunityStorageProvider = new OpportunityStorageProvider();
63
- export default opportunityStorageProvider;
87
+ export default OpportunityStorageProvider;
64
88
  //# sourceMappingURL=OpportunityStorageProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpportunityStorageProvider.js","sourceRoot":"","sources":["../../../src/modules/storage/OpportunityStorageProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAG1C,MAAM,0BAA0B;IAG5B;QAFQ,iBAAY,GAAG,IAAI,CAAC;QAGxB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IAC7H,CAAC;IAEK,YAAY,CAAC,OAAY;;YAC3B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpD,OAAO,CAAC,GAAG,CAAC,wDAAwD,GAAG,GAAG,CAAC,CAAC;YAC5E,OAAO,GAAG,CAAC;QACf,CAAC;KAAA;IAEK,eAAe,CAAC,OAAa;;YAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,gCAAgC,GAAG,GAAG,CAAC,CAAC;QAC/E,CAAC;KAAA;IAEK,eAAe,CAAC,GAAW;;;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YAEjC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC,CAAC;YAE7B,MAAM,OAAO,GAAG,EAAE,CAAA;;gBAElB,KAA0B,IAAA,KAAA,cAAA,IAAI,CAAC,OAAO,CAAA,IAAA;oBAA3B,MAAM,KAAK,WAAA,CAAA;oBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBACtB;;;;;;;;;YAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,GAAG,OAAO,CAAC,CAAC;;KACtE;CACJ;AAED,MAAM,0BAA0B,GAA+B,IAAI,0BAA0B,EAAE,CAAC;AAChG,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"OpportunityStorageProvider.js","sourceRoot":"","sources":["../../../src/modules/storage/OpportunityStorageProvider.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAA;AAQvB,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAG/C,MAAM,0BAA0B;IAG5B,YAAY,OAAe;QAK3B,uBAAuB;QACvB,qBAAgB,GAAG,GAAS,EAAE;YAC1B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC;QAPE,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAOD,MAAM,CAAC,OAAO;QACV,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAM,IAAI,EAAC,EAAE;YACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEnD,2BAA2B;YAC3B,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAEf,gCAAgC;YAChC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE;gBACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,eAAe;YACf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAElB,QAAQ;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;IACT,CAAC;IAGD;;;;MAIE;IACI,KAAK,CAAC,GAAsD;;YAC9D,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5C,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC,CAAA;gBAEF,OAAO,IAAI,CAAC;aACf;YAAC,OAAM,KAAK,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAClB,OAAO,EAAE,CAAA;aACZ;QACL,CAAC;KAAA;IAED;;;;MAIE;IACI,WAAW,CAAC,MAAc,EAAE,EAAE,UAAkB;;YACtD,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAA;aACV;YAAC,OAAM,KAAK,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAClB,OAAO,EAAE,CAAA;aACZ;QACL,CAAC;KAAA;IAEI,wBAAwB,CAAC,UAAkB;;YAC5C,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAA;QACtE,CAAC;KAAA;IAEK,SAAS,CAAC,GAAW;;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC;KAAA;CACJ;AAED,eAAe,0BAA0B,CAAA"}
@@ -15,7 +15,7 @@ function syncMarkets() {
15
15
  return __awaiter(this, void 0, void 0, function* () {
16
16
  //sync Markets
17
17
  yield opportunityService.getProviderInterface().getLogs({
18
- address: addressMap[Contracts.MARKET_FACTORY],
18
+ address: addressMap[opportunityService.getEthNetwork()][Contracts.MARKET_FACTORY],
19
19
  fromBlock: 1,
20
20
  toBlock: 'latest'
21
21
  }).then((logs) => {
@@ -1 +1 @@
1
- {"version":3,"file":"sync-markets.js","sourceRoot":"","sources":["../../src/sync/sync-markets.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,SAAe,WAAW;;QACrB,cAAc;QACd,MAAM,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC;YACrD,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC;YAC7C,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,QAAQ;SACpB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;oBACvD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB;iBACzC;YACL,CAAC,CAAC,CAAA;QACN,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,GAAG,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACN,CAAC;CAAA;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"sync-markets.js","sourceRoot":"","sources":["../../src/sync/sync-markets.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,SAAe,WAAW;;QACrB,cAAc;QACd,MAAM,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC;YACrD,OAAO,EAAE,UAAU,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;YACjF,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,QAAQ;SACpB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;oBACvD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB;iBACzC;YACL,CAAC,CAAC,CAAA;QACN,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,GAAG,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACN,CAAC;CAAA;AAED,eAAe,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opportunity-service",
3
- "version": "0.0.531",
3
+ "version": "0.0.538",
4
4
  "description": "A service layer that connects all services between the blockchain and ui.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -40,24 +40,35 @@
40
40
  "typescript": "^4.5.2"
41
41
  },
42
42
  "dependencies": {
43
+ "@ethersproject/providers": "^5.5.0",
43
44
  "@toruslabs/torus-embed": "^1.10.14",
44
45
  "@types/sqlite3": "^3.1.7",
45
46
  "@types/web3": "^1.2.2",
47
+ "@vocdoni/census": "^1.14.1",
48
+ "@vocdoni/client": "^1.14.2",
49
+ "@vocdoni/contract-wrappers": "^1.14.1",
50
+ "@vocdoni/data-models": "^1.14.2",
51
+ "@vocdoni/voting": "^1.14.0",
46
52
  "assert": "^2.0.0",
53
+ "bluebird": "^3.7.2",
47
54
  "compression": "^1.7.4",
48
55
  "cors": "^2.8.5",
49
56
  "dotenv": "^8.2.0",
50
57
  "dvote-js": "^1.13.3",
58
+ "eth-crypto": "^2.1.0",
51
59
  "ethereumjs-tx": "^2.1.2",
60
+ "ethereumjs-wallet": "^1.0.2",
52
61
  "ethers": "^5.2.0",
53
62
  "ethrpc": "^6.2.4",
54
63
  "express": "^4.17.1",
55
64
  "fortmatic": "^2.2.1",
56
- "ipfs": "^0.54.4",
65
+ "ipfs": "^0.54.5",
57
66
  "ipfs-api": "^26.1.2",
58
67
  "ipfs-core": "^0.7.1",
59
68
  "ipfs-http-client": "^49.0.4",
69
+ "keythereum": "^1.2.0",
60
70
  "md5": "^2.3.0",
71
+ "orbit-db": "^0.28.0",
61
72
  "web3": "^1.3.5"
62
73
  }
63
74
  }
@@ -12,28 +12,32 @@ import opportunityAPI from './api/index';
12
12
  import opportunityStorageProvider from "./modules/storage/OpportunityStorageProvider";
13
13
 
14
14
  import Web3 from 'web3';
15
+ import OpportunityStorageProvider from "./modules/storage/OpportunityStorageProvider";
16
+ import { EthNetworkID } from "dvote-js";
15
17
 
16
18
  class OpportunityService {
17
19
  private eventEmitter = opportunityEventEmitter;
18
20
  private running: boolean = false;
19
- private syncing: boolean;
21
+ private syncing: boolean = false;
20
22
  private ethersProvider : providers.JsonRpcProvider = ethers.getDefaultProvider('http://localhost:8545');
21
23
  private ethersSigner : providers.JsonRpcSigner = null;
22
- private static defaultProvider;// = new Web3('http://localhost:8545')
24
+ private static defaultProvider = new Web3('http://localhost:8545')
23
25
  private opportunityLogger = null;
24
- private storageProvider = opportunityStorageProvider;
26
+ private storageProvider = null;
25
27
  private currentAccount = null;
26
- private ethNetwork : string = 'mainnet'
27
- public api = opportunityAPI;
28
+ private ethNetwork : EthNetworkID | string = 'rinkeby'
29
+ public storage = null
28
30
 
29
31
  private static instance: OpportunityService;
30
32
 
33
+ public api = opportunityAPI;
34
+
31
35
  /**
32
36
  * The Singleton's constructor should always be private to prevent direct
33
37
  * construction calls with the `new` operator.
34
38
  */
35
39
  private constructor() {
36
- this.ethNetwork = 'mainnet'
40
+ this.ethNetwork = 'rinkeby'
37
41
  }
38
42
 
39
43
  /**
@@ -70,21 +74,27 @@ class OpportunityService {
70
74
  startEventListeners(eventDictionary, onComplete);
71
75
  }
72
76
 
73
- setEthNetwork(network) {
74
- switch(network) {
77
+ setNetworkParameters(networkId: number, dbAddress: string) {
78
+ switch(networkId) {
75
79
  case 1:
76
80
  this.ethNetwork = 'mainnet'
77
81
  break
78
82
  case 4:
79
- this.ethNetwork = 'mainnet'
83
+ this.ethNetwork = 'rinkeby'
80
84
  break
81
85
  default:
82
- this.ethNetwork = 'mainnet'
86
+ this.ethNetwork = 'rinkeby'
83
87
  }
88
+
89
+ this.storageProvider = new OpportunityStorageProvider(dbAddress)
90
+ }
91
+
92
+ getEthNetwork(): EthNetworkID | string {
93
+ return this.ethNetwork
84
94
  }
85
95
 
86
- getEthNetwork() {
87
- return this.ethNetwork;
96
+ getStorageProvider() {
97
+ return this.storageProvider
88
98
  }
89
99
 
90
100
  async startService() {
@@ -126,18 +136,6 @@ class OpportunityService {
126
136
  return this.syncing;
127
137
  }
128
138
 
129
- accessContractUploadBlock(contract: Contracts) {
130
- return blocksMap[contract];
131
- }
132
-
133
- accessContractAddress(contract: Contracts) {
134
- return addressesMap[contract];
135
- }
136
-
137
- accessContractABI(contract: Contracts) {
138
- return abiMap[contract];
139
- }
140
-
141
139
  getDefaultProviderInterface() {
142
140
  return OpportunityService.defaultProvider;
143
141
  }
@@ -0,0 +1,30 @@
1
+ import * as assert from 'assert'
2
+ import { VotingApi, VochainWaiter } from '@vocdoni/voting'
3
+ import { GatewayPool } from '@vocdoni/client'
4
+
5
+ export async function checkVoteResults(processId: string, gwPool: GatewayPool) {
6
+ assert.strictEqual(typeof processId, "string")
7
+
8
+ console.log("Waiting a bit for the votes to be received", processId)
9
+ const nextBlock = 2 + await VotingApi.getBlockHeight(gwPool)
10
+ await VochainWaiter.waitUntil(nextBlock, gwPool, { verbose: true })
11
+
12
+ console.log("Fetching the number of votes for", processId)
13
+ const envelopeHeight = await VotingApi.getEnvelopeHeight(processId, gwPool)
14
+ console.log('Votes submitted: ' + envelopeHeight)
15
+
16
+ const processState = await VotingApi.getProcessState(processId, gwPool)
17
+
18
+ console.log("Waiting for the process to end", processId)
19
+ await VochainWaiter.waitUntil(processState.endBlock, gwPool, { verbose: true })
20
+
21
+ console.log("Waiting a bit for the results to be ready", processId)
22
+ await VochainWaiter.wait(2, gwPool, { verbose: true })
23
+
24
+ console.log("Fetching the vote results for", processId)
25
+ const rawResults = await VotingApi.getResults(processId, gwPool)
26
+ const totalVotes = await VotingApi.getEnvelopeHeight(processId, gwPool)
27
+
28
+ console.log('Raw voting results: ' + rawResults)
29
+ console.log('Total votes: ' + totalVotes)
30
+ }
@@ -0,0 +1,36 @@
1
+ import { GatewayPool, IGatewayDiscoveryParameters, DVoteGateway } from "@vocdoni/client"
2
+ import { EthNetworkID } from "@vocdoni/common"
3
+ import { VocdoniEnvironment } from "dvote-js"
4
+
5
+ export async function connectGateways(networkId: EthNetworkID, environment: VocdoniEnvironment, bootnodeContentUri: string){
6
+ console.log("Connecting to the gateways")
7
+
8
+ const options: IGatewayDiscoveryParameters = {
9
+ networkId: networkId,
10
+ environment: environment,
11
+ bootnodesContentUri: bootnodeContentUri
12
+ }
13
+
14
+ const pool = await GatewayPool.discover(options)
15
+
16
+ console.log("Connected to", pool.dvoteUri)
17
+ console.log("Connected to", pool.provider["connection"].url)
18
+
19
+ return pool
20
+ }
21
+
22
+ export async function getOracleClient() {
23
+ console.log('Creating oracle instance...')
24
+ const oracleClient = new DVoteGateway({
25
+ uri: 'https://signaling-oracle.dev.vocdoni.net/dvote',
26
+ supportedApis: ["oracle"]
27
+ })
28
+
29
+ console.log('Initiating oracle...')
30
+ await oracleClient.init()
31
+
32
+ console.log('Oracle status: ' + oracleClient.isReady)
33
+ console.log('Oracle health: ' + oracleClient.health)
34
+
35
+ return oracleClient
36
+ }
@@ -0,0 +1,34 @@
1
+ import { GatewayPool } from '@vocdoni/client'
2
+ import { EntityMetadataTemplate } from '@vocdoni/data-models'
3
+ import { EntityApi } from '@vocdoni/voting'
4
+ import { Wallet } from 'ethers'
5
+ import * as assert from 'assert'
6
+
7
+ export async function ensureEntityMetadata(creatorWallet: Wallet, gwPool: GatewayPool) {
8
+ console.log("Making sure metadata doesn't already exist...")
9
+ const meta = await EntityApi.getMetadata(creatorWallet.address, gwPool).catch(err => console.log(err))
10
+ if (!meta) return false
11
+
12
+ console.log("Setting Metadata for entity", creatorWallet.address)
13
+ const metadata = JSON.parse(JSON.stringify(EntityMetadataTemplate))
14
+
15
+ metadata.name = { default: "Opportunity" }
16
+ metadata.description = { default: "Opportunity, decentralized job markets" }
17
+ metadata.media = {
18
+ avatar: "https://picsum.photos/200/300",
19
+ header: "Opportunity, decentralized job markets",
20
+ logo: "https://picsum.photos/200/300"
21
+ }
22
+
23
+ await EntityApi.setMetadata(creatorWallet.address, metadata, creatorWallet, gwPool)
24
+ console.log('Entity metadata set')
25
+
26
+ // Read back
27
+ const entityMetaPost = await EntityApi.getMetadata(creatorWallet.address, gwPool)
28
+ if (!entityMetaPost) return false
29
+
30
+ assert.strictEqual(entityMetaPost.name.default, metadata.name.default)
31
+ assert.strictEqual(entityMetaPost.description.default, metadata.description.default)
32
+
33
+ return true
34
+ }
@@ -0,0 +1,116 @@
1
+ import { Wallet } from "@ethersproject/wallet"
2
+ import { CensusErc20Api } from "@vocdoni/census"
3
+ import { ProcessState, VotingApi, VotingOracleApi } from "@vocdoni/voting"
4
+ import { DVoteGateway, Erc20TokensApi, GatewayPool } from "@vocdoni/client"
5
+ import { ProcessMetadataTemplate } from "@vocdoni/data-models"
6
+ import { ProcessMode, ProcessContractParameters, ProcessEnvelopeType } from '@vocdoni/contract-wrappers'
7
+ import * as assert from 'assert'
8
+ import { waitUntilPresent } from "./util/wait-until-present"
9
+
10
+ export async function launchNewVote(
11
+ creatorWallet: Wallet,
12
+ tokenAddress: string,
13
+ gwPool: GatewayPool,
14
+ oracleClient: DVoteGateway,
15
+ disputeId: string,
16
+ employer: string,
17
+ worker: string
18
+ ) {
19
+ console.log('Launching new vote...')
20
+
21
+ if (!await Erc20TokensApi.isRegistered(tokenAddress, gwPool)) {
22
+ await CensusErc20Api.registerTokenAuto(
23
+ tokenAddress,
24
+ creatorWallet,
25
+ gwPool
26
+ )
27
+
28
+ assert(await Erc20TokensApi.isRegistered(tokenAddress, gwPool))
29
+ }
30
+
31
+ const sourceBlockHeight = (await gwPool.provider.getBlockNumber()) - 1
32
+ const tokenInfo = await CensusErc20Api.getTokenInfo(tokenAddress, gwPool)
33
+ const proof = await CensusErc20Api.generateProof(tokenAddress, creatorWallet.address, tokenInfo.balanceMappingPosition, sourceBlockHeight, gwPool.provider)
34
+
35
+ if (!proof?.storageProof?.length) throw new Error("Invalid storage proof")
36
+
37
+ console.log("Preparing the new vote metadata")
38
+ const processMetadataPre = JSON.parse(JSON.stringify(ProcessMetadataTemplate)) // make a copy of the template
39
+ processMetadataPre.title.default = disputeId,
40
+ processMetadataPre.description.default = `Dispute: ${disputeId}`,
41
+ processMetadataPre.questions = [
42
+ {
43
+ title: { default: "Contract Dispute" },
44
+ description: { default: "Please choose one of the two participants" },
45
+ choices: [
46
+ { title: { default: employer }, value: 0 },
47
+ { title: { default: worker }, value: 1 },
48
+ ]
49
+ }
50
+ ]
51
+ processMetadataPre.meta.disputeId = disputeId;
52
+
53
+ const maxValue = processMetadataPre.questions.reduce((prev, cur) => {
54
+ const localMax = cur.choices.reduce((prev, cur) => prev > cur.value ? prev : cur.value, 0)
55
+ return localMax > prev ? localMax : prev
56
+ }, 0)
57
+
58
+ console.log("Getting the block height")
59
+ const currentBlock = await VotingApi.getBlockHeight(gwPool)
60
+ const startBlock = currentBlock + 15 //start after 15 blocks
61
+ const blockCount = 6 * 4 // 4m
62
+
63
+ const processParamsPre = {
64
+ mode: ProcessMode.make({ autoStart: true }),
65
+ envelopeType: ProcessEnvelopeType.make({}), // bit mask
66
+ metadata: processMetadataPre,
67
+ startBlock,
68
+ blockCount,
69
+ maxCount: 1,
70
+ maxValue,
71
+ maxTotalCost: 0,
72
+ costExponent: 10000, // 1.0000
73
+ maxVoteOverwrites: 1,
74
+ sourceBlockHeight,
75
+ tokenAddress,
76
+ paramsSignature: "0x0000000000000000000000000000000000000000000000000000000000000000"
77
+ }
78
+
79
+ const tokenDetails = {
80
+ balanceMappingPosition: tokenInfo.balanceMappingPosition,
81
+ storageHash: proof.storageHash,
82
+ storageProof: {
83
+ key: proof.storageProof[0].key,
84
+ value: proof.storageProof[0].value,
85
+ proof: proof.storageProof[0].proof
86
+ }
87
+ }
88
+
89
+ console.log("Creating the process")
90
+ const processId = await VotingOracleApi.newProcessErc20(
91
+ processParamsPre,
92
+ tokenDetails,
93
+ creatorWallet,
94
+ gwPool,
95
+ oracleClient
96
+ )
97
+
98
+ assert(processId)
99
+ console.log("Created process with process id: ", processId)
100
+
101
+ await waitUntilPresent(processId, gwPool)
102
+
103
+ console.log('Checking process params to ensure process was created...')
104
+ const processParams: ProcessState = await VotingApi.getProcessState(processId, gwPool)
105
+
106
+ assert.strictEqual(processParams?.entityAddress.toLowerCase(), creatorWallet.address.toLowerCase())
107
+ assert.strictEqual(processParams?.startBlock, processParamsPre?.startBlock, "SENT " + JSON.stringify(processParamsPre) + " GOT " + JSON.stringify(processParams))
108
+ assert.strictEqual(processParams?.blockCount, processParamsPre?.blockCount)
109
+ assert.strictEqual(processParams?.censusUri, processParamsPre?.censusUri)
110
+
111
+ const processMetadata = await VotingApi.getProcessMetadata(processId, gwPool)
112
+ console.log('Process created with metadata: ')
113
+ console.log(processMetadata)
114
+
115
+ return { processId, processParams, processMetadata }
116
+ }