@leofcoin/chain 1.0.21 → 1.0.24
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/.jsdoc.json +1 -1
- package/dist/chain.browser.js +28552 -17092
- package/dist/chain.js +477 -121
- package/dist/node.browser.js +8815 -66914
- package/dist/node.js +1 -1
- package/dist/pako.browser.js +6731 -0
- package/dist/protons.browser.js +11429 -0
- package/dist/wrtc.browser.js +28 -0
- package/docs/@leofcoin/chain/{1.0.16 → 1.0.22}/chain.js.html +267 -114
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/contracts_factory.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.22}/contracts_nameService.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.22}/contracts_proxies_factoryProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.22}/contracts_proxies_nameServiceProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.22}/contracts_proxies_nativeTokenProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/contracts_proxies_validatorsProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/contracts_proxies_votingProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.22}/contracts_validators.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Bold-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-BoldItalic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Italic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Light-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-LightItalic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Regular-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Semibold-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.15 → 1.0.22}/global.html +687 -35
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/icons/home.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/icons/search.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/index.html +3 -3
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.22}/machine.js.html +18 -14
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/scripts/linenumber.js +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/scripts/pagelocation.js +0 -0
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.22}/standards_roles.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.22}/standards_token.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/styles/collapse.css +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/styles/jsdoc-default.css +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/styles/prettify-jsdoc.css +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.22}/styles/prettify-tomorrow.css +0 -0
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.24}/chain.js.html +267 -114
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/contracts_factory.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.24}/contracts_nameService.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.24}/contracts_proxies_factoryProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.14 → 1.0.24}/contracts_proxies_nameServiceProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.24}/contracts_proxies_nativeTokenProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/contracts_proxies_validatorsProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/contracts_proxies_votingProxy.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.15 → 1.0.24}/contracts_validators.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Bold-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-BoldItalic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Italic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Light-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-LightItalic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Regular-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Semibold-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.24}/global.html +687 -35
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/icons/home.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/icons/search.svg +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/index.html +3 -3
- package/docs/@leofcoin/chain/{1.0.15 → 1.0.24}/machine.js.html +18 -14
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/scripts/linenumber.js +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/scripts/pagelocation.js +0 -0
- package/docs/@leofcoin/chain/{1.0.12 → 1.0.24}/standards_roles.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/standards_token.js.html +3 -3
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/styles/collapse.css +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/styles/jsdoc-default.css +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/styles/prettify-jsdoc.css +0 -0
- package/docs/@leofcoin/chain/{1.0.13 → 1.0.24}/styles/prettify-tomorrow.css +0 -0
- package/package.json +55 -52
- package/rollup.config.js +9 -2
- package/src/chain.js +264 -111
- package/src/config/config.js +6 -2
- package/src/machine.js +15 -11
- package/src/node.js +2 -35
- package/src/state.js +8 -3
- package/src/transactions/transaction.js +3 -0
- package/test/chain.js +39 -60
- package/webpack.config.js +10 -140
- package/dist/browser/peernet.js +0 -101516
- package/dist/chain.browser.js.tmp-browserify-65536332430764332457 +0 -0
- package/dist/chain.browser.js.tmp-browserify-77283953363424018335 +0 -0
- package/dist/chain.browser.min.js +0 -2
- package/dist/chain.browser.min.js.LICENSE.txt +0 -10
- package/dist/lib.browser.js +0 -16966
- package/dist/native.js +0 -1
- package/dist/node.browser.min.js +0 -2
- package/dist/node.browser.min.js.LICENSE.txt +0 -12
- package/dist/token/native.js +0 -1
- package/dist/token.js +0 -1
- package/docs/@leofcoin/chain/1.0.12/chain.js.html +0 -738
- package/docs/@leofcoin/chain/1.0.12/contracts_proxies_factoryProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.12/contracts_proxies_nameServiceProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.12/contracts_validators.js.html +0 -242
- package/docs/@leofcoin/chain/1.0.12/machine.js.html +0 -252
- package/docs/@leofcoin/chain/1.0.12/standards_token.js.html +0 -260
- package/docs/@leofcoin/chain/1.0.13/chain.js.html +0 -738
- package/docs/@leofcoin/chain/1.0.13/contracts_validators.js.html +0 -242
- package/docs/@leofcoin/chain/1.0.13/global.html +0 -1153
- package/docs/@leofcoin/chain/1.0.13/machine.js.html +0 -251
- package/docs/@leofcoin/chain/1.0.13/standards_roles.js.html +0 -188
- package/docs/@leofcoin/chain/1.0.14/contracts_factory.js.html +0 -182
- package/docs/@leofcoin/chain/1.0.14/contracts_nameService.js.html +0 -231
- package/docs/@leofcoin/chain/1.0.14/contracts_proxies_nativeTokenProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.14/contracts_proxies_validatorsProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.14/contracts_proxies_votingProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.14/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.14/global.html +0 -1153
- package/docs/@leofcoin/chain/1.0.14/icons/home.svg +0 -4
- package/docs/@leofcoin/chain/1.0.14/icons/search.svg +0 -4
- package/docs/@leofcoin/chain/1.0.14/index.html +0 -125
- package/docs/@leofcoin/chain/1.0.14/scripts/linenumber.js +0 -23
- package/docs/@leofcoin/chain/1.0.14/scripts/pagelocation.js +0 -89
- package/docs/@leofcoin/chain/1.0.14/styles/collapse.css +0 -27
- package/docs/@leofcoin/chain/1.0.14/styles/jsdoc-default.css +0 -953
- package/docs/@leofcoin/chain/1.0.14/styles/prettify-jsdoc.css +0 -111
- package/docs/@leofcoin/chain/1.0.14/styles/prettify-tomorrow.css +0 -138
- package/docs/@leofcoin/chain/1.0.15/chain.js.html +0 -738
- package/docs/@leofcoin/chain/1.0.15/contracts_factory.js.html +0 -182
- package/docs/@leofcoin/chain/1.0.15/contracts_nameService.js.html +0 -231
- package/docs/@leofcoin/chain/1.0.15/contracts_proxies_factoryProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.15/contracts_proxies_nameServiceProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.15/contracts_proxies_nativeTokenProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.15/contracts_proxies_validatorsProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.15/contracts_proxies_votingProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.15/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.15/icons/home.svg +0 -4
- package/docs/@leofcoin/chain/1.0.15/icons/search.svg +0 -4
- package/docs/@leofcoin/chain/1.0.15/index.html +0 -125
- package/docs/@leofcoin/chain/1.0.15/scripts/linenumber.js +0 -23
- package/docs/@leofcoin/chain/1.0.15/scripts/pagelocation.js +0 -89
- package/docs/@leofcoin/chain/1.0.15/standards_roles.js.html +0 -188
- package/docs/@leofcoin/chain/1.0.15/standards_token.js.html +0 -260
- package/docs/@leofcoin/chain/1.0.15/styles/collapse.css +0 -27
- package/docs/@leofcoin/chain/1.0.15/styles/jsdoc-default.css +0 -953
- package/docs/@leofcoin/chain/1.0.15/styles/prettify-jsdoc.css +0 -111
- package/docs/@leofcoin/chain/1.0.15/styles/prettify-tomorrow.css +0 -138
- package/docs/@leofcoin/chain/1.0.16/contracts_factory.js.html +0 -182
- package/docs/@leofcoin/chain/1.0.16/contracts_nameService.js.html +0 -231
- package/docs/@leofcoin/chain/1.0.16/contracts_proxies_factoryProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.16/contracts_proxies_nameServiceProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.16/contracts_proxies_nativeTokenProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.16/contracts_proxies_validatorsProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.16/contracts_proxies_votingProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.16/contracts_validators.js.html +0 -242
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.16/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.16/global.html +0 -1153
- package/docs/@leofcoin/chain/1.0.16/icons/home.svg +0 -4
- package/docs/@leofcoin/chain/1.0.16/icons/search.svg +0 -4
- package/docs/@leofcoin/chain/1.0.16/index.html +0 -125
- package/docs/@leofcoin/chain/1.0.16/machine.js.html +0 -251
- package/docs/@leofcoin/chain/1.0.16/scripts/linenumber.js +0 -23
- package/docs/@leofcoin/chain/1.0.16/scripts/pagelocation.js +0 -89
- package/docs/@leofcoin/chain/1.0.16/standards_roles.js.html +0 -188
- package/docs/@leofcoin/chain/1.0.16/standards_token.js.html +0 -260
- package/docs/@leofcoin/chain/1.0.16/styles/collapse.css +0 -27
- package/docs/@leofcoin/chain/1.0.16/styles/jsdoc-default.css +0 -953
- package/docs/@leofcoin/chain/1.0.16/styles/prettify-jsdoc.css +0 -111
- package/docs/@leofcoin/chain/1.0.16/styles/prettify-tomorrow.css +0 -138
- package/docs/@leofcoin/chain/1.0.17/chain.js.html +0 -738
- package/docs/@leofcoin/chain/1.0.17/contracts_factory.js.html +0 -182
- package/docs/@leofcoin/chain/1.0.17/contracts_nameService.js.html +0 -231
- package/docs/@leofcoin/chain/1.0.17/contracts_proxies_factoryProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.17/contracts_proxies_nameServiceProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.17/contracts_proxies_nativeTokenProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.17/contracts_proxies_validatorsProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.17/contracts_proxies_votingProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.17/contracts_validators.js.html +0 -242
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.17/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.17/global.html +0 -1153
- package/docs/@leofcoin/chain/1.0.17/icons/home.svg +0 -4
- package/docs/@leofcoin/chain/1.0.17/icons/search.svg +0 -4
- package/docs/@leofcoin/chain/1.0.17/index.html +0 -125
- package/docs/@leofcoin/chain/1.0.17/machine.js.html +0 -251
- package/docs/@leofcoin/chain/1.0.17/scripts/linenumber.js +0 -23
- package/docs/@leofcoin/chain/1.0.17/scripts/pagelocation.js +0 -89
- package/docs/@leofcoin/chain/1.0.17/standards_roles.js.html +0 -188
- package/docs/@leofcoin/chain/1.0.17/standards_token.js.html +0 -260
- package/docs/@leofcoin/chain/1.0.17/styles/collapse.css +0 -27
- package/docs/@leofcoin/chain/1.0.17/styles/jsdoc-default.css +0 -953
- package/docs/@leofcoin/chain/1.0.17/styles/prettify-jsdoc.css +0 -111
- package/docs/@leofcoin/chain/1.0.17/styles/prettify-tomorrow.css +0 -138
- package/docs/@leofcoin/chain/1.0.18/chain.js.html +0 -738
- package/docs/@leofcoin/chain/1.0.18/contracts_factory.js.html +0 -182
- package/docs/@leofcoin/chain/1.0.18/contracts_nameService.js.html +0 -231
- package/docs/@leofcoin/chain/1.0.18/contracts_proxies_factoryProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.18/contracts_proxies_nameServiceProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.18/contracts_proxies_nativeTokenProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.18/contracts_proxies_validatorsProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.18/contracts_proxies_votingProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.18/contracts_validators.js.html +0 -242
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.18/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.18/global.html +0 -1153
- package/docs/@leofcoin/chain/1.0.18/icons/home.svg +0 -4
- package/docs/@leofcoin/chain/1.0.18/icons/search.svg +0 -4
- package/docs/@leofcoin/chain/1.0.18/index.html +0 -125
- package/docs/@leofcoin/chain/1.0.18/machine.js.html +0 -251
- package/docs/@leofcoin/chain/1.0.18/scripts/linenumber.js +0 -23
- package/docs/@leofcoin/chain/1.0.18/scripts/pagelocation.js +0 -89
- package/docs/@leofcoin/chain/1.0.18/standards_roles.js.html +0 -188
- package/docs/@leofcoin/chain/1.0.18/standards_token.js.html +0 -260
- package/docs/@leofcoin/chain/1.0.18/styles/collapse.css +0 -27
- package/docs/@leofcoin/chain/1.0.18/styles/jsdoc-default.css +0 -953
- package/docs/@leofcoin/chain/1.0.18/styles/prettify-jsdoc.css +0 -111
- package/docs/@leofcoin/chain/1.0.18/styles/prettify-tomorrow.css +0 -138
- package/docs/@leofcoin/chain/1.0.19/chain.js.html +0 -738
- package/docs/@leofcoin/chain/1.0.19/contracts_factory.js.html +0 -182
- package/docs/@leofcoin/chain/1.0.19/contracts_nameService.js.html +0 -231
- package/docs/@leofcoin/chain/1.0.19/contracts_proxies_factoryProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.19/contracts_proxies_nameServiceProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.19/contracts_proxies_nativeTokenProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.19/contracts_proxies_validatorsProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.19/contracts_proxies_votingProxy.js.html +0 -135
- package/docs/@leofcoin/chain/1.0.19/contracts_validators.js.html +0 -242
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/@leofcoin/chain/1.0.19/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/@leofcoin/chain/1.0.19/global.html +0 -1153
- package/docs/@leofcoin/chain/1.0.19/icons/home.svg +0 -4
- package/docs/@leofcoin/chain/1.0.19/icons/search.svg +0 -4
- package/docs/@leofcoin/chain/1.0.19/index.html +0 -125
- package/docs/@leofcoin/chain/1.0.19/machine.js.html +0 -251
- package/docs/@leofcoin/chain/1.0.19/scripts/linenumber.js +0 -23
- package/docs/@leofcoin/chain/1.0.19/scripts/pagelocation.js +0 -89
- package/docs/@leofcoin/chain/1.0.19/standards_roles.js.html +0 -188
- package/docs/@leofcoin/chain/1.0.19/standards_token.js.html +0 -260
- package/docs/@leofcoin/chain/1.0.19/styles/collapse.css +0 -27
- package/docs/@leofcoin/chain/1.0.19/styles/jsdoc-default.css +0 -953
- package/docs/@leofcoin/chain/1.0.19/styles/prettify-jsdoc.css +0 -111
- package/docs/@leofcoin/chain/1.0.19/styles/prettify-tomorrow.css +0 -138
package/src/chain.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { BigNumber, formatUnits, parseUnits } from '@leofcoin/utils'
|
|
2
|
-
import Machine from './machine'
|
|
3
|
-
import
|
|
2
|
+
import Machine from './machine.js'
|
|
3
|
+
import { ContractMessage, TransactionMessage, BlockMessage, BWMessage, BWRequestMessage } from './../../messages/src/messages'
|
|
4
|
+
import { addresses } from './../../addresses/src/addresses'
|
|
5
|
+
import { contractFactoryMessage, nativeTokenMessage, validatorsMessage, nameServiceMessage, calculateFee } from './../../lib/src/lib'
|
|
6
|
+
import MultiWallet from '@leofcoin/multi-wallet'
|
|
7
|
+
import {CodecHash} from '@leofcoin/codec-format-interface/dist/index'
|
|
8
|
+
import bs32 from '@vandeurenglenn/base32'
|
|
9
|
+
import config from './config/config'
|
|
10
|
+
import { formatBytes } from '../../utils/src/utils.js'
|
|
4
11
|
|
|
5
12
|
globalThis.BigNumber = BigNumber
|
|
6
13
|
|
|
7
|
-
const { ContractMessage, TransactionMessage, BlockMessage, BWMessage, BWRequestMessage } = lib
|
|
8
14
|
// check if browser or local
|
|
9
15
|
export default class Chain {
|
|
10
16
|
#validators = []
|
|
@@ -26,7 +32,7 @@ export default class Chain {
|
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
get nativeToken() {
|
|
29
|
-
return
|
|
35
|
+
return addresses.nativeToken
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
get validators() {
|
|
@@ -39,28 +45,39 @@ export default class Chain {
|
|
|
39
45
|
|
|
40
46
|
async hasTransactionToHandle() {
|
|
41
47
|
const size = await transactionPoolStore.size()
|
|
48
|
+
console.log({size});
|
|
42
49
|
if (size > 0) return true
|
|
43
50
|
return false
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
async #runEpoch() {
|
|
47
|
-
|
|
54
|
+
this.#runningEpoch = true
|
|
55
|
+
console.log('epoch');
|
|
56
|
+
const validators = await this.staticCall(addresses.validators, 'validators')
|
|
48
57
|
if (!validators[peernet.id]?.active) return
|
|
58
|
+
console.log('active');
|
|
49
59
|
|
|
50
|
-
|
|
60
|
+
|
|
51
61
|
const start = new Date().getTime()
|
|
52
|
-
|
|
62
|
+
try {
|
|
63
|
+
await this.#createBlock()
|
|
64
|
+
} catch (e) {
|
|
65
|
+
console.error(e);
|
|
66
|
+
}
|
|
67
|
+
|
|
53
68
|
const end = new Date().getTime()
|
|
54
|
-
console.log((end - start) / 1000 + ' s');
|
|
69
|
+
console.log(((end - start) / 1000) + ' s');
|
|
70
|
+
|
|
55
71
|
if (await this.hasTransactionToHandle()) return this.#runEpoch()
|
|
56
72
|
this.#runningEpoch = false
|
|
73
|
+
// if (await this.hasTransactionToHandle() && !this.#runningEpoch) return this.#runEpoch()
|
|
57
74
|
}
|
|
58
75
|
|
|
59
76
|
async #setup() {
|
|
60
|
-
await contractStore.put(
|
|
61
|
-
await contractStore.put(
|
|
62
|
-
await contractStore.put(
|
|
63
|
-
await contractStore.put(
|
|
77
|
+
await contractStore.put(addresses.contractFactory, contractFactoryMessage)
|
|
78
|
+
await contractStore.put(addresses.nativeToken, nativeTokenMessage)
|
|
79
|
+
await contractStore.put(addresses.validators, validatorsMessage)
|
|
80
|
+
await contractStore.put(addresses.nameService, nameServiceMessage)
|
|
64
81
|
console.log('handle native contracts');
|
|
65
82
|
// handle native contracts
|
|
66
83
|
}
|
|
@@ -79,7 +96,6 @@ export default class Chain {
|
|
|
79
96
|
|
|
80
97
|
promises = await Promise.allSettled(promises)
|
|
81
98
|
promises = promises.reduce((set, c) => {
|
|
82
|
-
console.log({c});
|
|
83
99
|
if (c.index > set.index) {
|
|
84
100
|
set.index = c.index
|
|
85
101
|
set.hash = c.hash
|
|
@@ -92,7 +108,8 @@ export default class Chain {
|
|
|
92
108
|
async #init() {
|
|
93
109
|
// this.node = await new Node()
|
|
94
110
|
this.participants = []
|
|
95
|
-
|
|
111
|
+
this.participating = false
|
|
112
|
+
const initialized = await contractStore.has(addresses.contractFactory)
|
|
96
113
|
if (!initialized) await this.#setup()
|
|
97
114
|
|
|
98
115
|
this.#machine = await new Machine()
|
|
@@ -101,8 +118,8 @@ export default class Chain {
|
|
|
101
118
|
try {
|
|
102
119
|
let localBlock = await chainStore.get('lastBlock')
|
|
103
120
|
localBlock = await peernet.get(new TextDecoder().decode(localBlock))
|
|
104
|
-
localBlock = new BlockMessage(localBlock)
|
|
105
|
-
this.#lastBlock = {...localBlock.decoded, hash: localBlock.hash}
|
|
121
|
+
localBlock = await await new BlockMessage(localBlock)
|
|
122
|
+
this.#lastBlock = {...localBlock.decoded, hash: await localBlock.hash}
|
|
106
123
|
// console.log(this.lastBlock.decoded.transactions);
|
|
107
124
|
} catch (e) {
|
|
108
125
|
await this.#sync()
|
|
@@ -118,15 +135,7 @@ export default class Chain {
|
|
|
118
135
|
|
|
119
136
|
peernet.subscribe('add-block', this.#addBlock.bind(this))
|
|
120
137
|
|
|
121
|
-
peernet.subscribe('add-transaction',
|
|
122
|
-
try {
|
|
123
|
-
transaction = new TransactionMessage(transaction)
|
|
124
|
-
await transactionPoolStore.put(transaction.hash, transaction.encoded)
|
|
125
|
-
if (await this.hasTransactionToHandle() && !this.#runningEpoch) return this.#runEpoch()
|
|
126
|
-
} catch (e) {
|
|
127
|
-
throw Error('invalid transaction')
|
|
128
|
-
}
|
|
129
|
-
})
|
|
138
|
+
peernet.subscribe('add-transaction', this.#addTransaction.bind(this))
|
|
130
139
|
|
|
131
140
|
pubsub.subscribe('peer:connected', this.#peerConnected.bind(this))
|
|
132
141
|
|
|
@@ -159,28 +168,41 @@ export default class Chain {
|
|
|
159
168
|
const end = this.#blocks.length
|
|
160
169
|
const start = (this.#blocks.length) - blocksSynced
|
|
161
170
|
await this.#loadBlocks(this.#blocks)
|
|
162
|
-
const message = new BlockMessage(this.lastBlock)
|
|
163
|
-
await blockStore.put(message.hash, message.encoded)
|
|
171
|
+
const message = await new BlockMessage(this.lastBlock)
|
|
172
|
+
await blockStore.put(await message.hash, message.encoded)
|
|
164
173
|
await chainStore.put('lastBlock', new TextEncoder().encode(this.lastBlock.hash))
|
|
165
174
|
}
|
|
166
175
|
}
|
|
167
176
|
|
|
168
|
-
|
|
169
|
-
|
|
177
|
+
#epochTimeout
|
|
178
|
+
|
|
179
|
+
async #addTransaction(transaction) {
|
|
180
|
+
try {
|
|
181
|
+
transaction = await new TransactionMessage(transaction)
|
|
182
|
+
const has = await transactionPoolStore.has(await transaction.hash)
|
|
183
|
+
if (!has) await transactionPoolStore.put(await transaction.hash, transaction.encoded)
|
|
184
|
+
if (this.participating && !this.#runningEpoch) this.#runEpoch()
|
|
185
|
+
} catch (e) {
|
|
186
|
+
throw Error('invalid transaction')
|
|
170
187
|
}
|
|
188
|
+
}
|
|
171
189
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
190
|
+
async #lastBlockHandler() {
|
|
191
|
+
return new peernet.protos['peernet-response']({response: new TextEncoder().encode(JSON.stringify({ hash: this.lastBlock?.hash, index: this.lastBlock?.index }))})
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
async resolveBlock(hash) {
|
|
195
|
+
let block = await peernet.get(hash, 'block')
|
|
196
|
+
if (!await peernet.has(hash, 'block')) await peernet.put(hash, block, 'block')
|
|
197
|
+
block = await new BlockMessage(block)
|
|
198
|
+
const size = block.encoded.length || block.encoded.byteLength
|
|
199
|
+
block = {...block.decoded, hash}
|
|
200
|
+
this.#blocks[block.index] = block
|
|
201
|
+
console.log(`loaded block: ${hash} @${block.index} ${formatBytes(size)}`);
|
|
202
|
+
if (block.index !== 0) {
|
|
203
|
+
return this.resolveBlock(block.previousHash)
|
|
183
204
|
}
|
|
205
|
+
}
|
|
184
206
|
|
|
185
207
|
async resolveBlocks() {
|
|
186
208
|
try {
|
|
@@ -245,7 +267,7 @@ export default class Chain {
|
|
|
245
267
|
}
|
|
246
268
|
|
|
247
269
|
async #addBlock(block) {
|
|
248
|
-
const blockMessage = new BlockMessage(block)
|
|
270
|
+
const blockMessage = await new BlockMessage(block)
|
|
249
271
|
// if (!Buffer.isBuffer(block)) block = Buffer.from(block, 'hex')
|
|
250
272
|
// const transactionJob = async transaction => {
|
|
251
273
|
// try {
|
|
@@ -260,15 +282,15 @@ export default class Chain {
|
|
|
260
282
|
// transaction = new TransactionMessage(transaction)
|
|
261
283
|
// return transaction
|
|
262
284
|
// }
|
|
263
|
-
await Promise.all(blockMessage.decoded.transactions
|
|
264
|
-
.map(transaction => transactionPoolStore.delete(transaction.hash)))
|
|
265
|
-
|
|
285
|
+
const deletions = await Promise.all(blockMessage.decoded.transactions
|
|
286
|
+
.map(async transaction => transactionPoolStore.delete(await transaction.hash)))
|
|
287
|
+
const hash = await blockMessage.hash
|
|
266
288
|
// let transactions = blockMessage.decoded.transactions.map(tx => transactionJob(tx))
|
|
267
289
|
// transactions = await Promise.all(transactions)
|
|
268
|
-
this.#lastBlock = {
|
|
269
|
-
await blockStore.put(
|
|
270
|
-
await chainStore.put('lastBlock', new TextEncoder().encode(
|
|
271
|
-
debug(`added block: ${
|
|
290
|
+
this.#lastBlock = { hash, ...blockMessage.decoded }
|
|
291
|
+
await blockStore.put(hash, blockMessage.encoded)
|
|
292
|
+
await chainStore.put('lastBlock', new TextEncoder().encode(hash))
|
|
293
|
+
debug(`added block: ${hash}`)
|
|
272
294
|
let promises = []
|
|
273
295
|
let contracts = []
|
|
274
296
|
for (let transaction of blockMessage.decoded.transactions) {
|
|
@@ -279,7 +301,10 @@ export default class Chain {
|
|
|
279
301
|
}
|
|
280
302
|
try {
|
|
281
303
|
promises = await Promise.allSettled(promises)
|
|
282
|
-
|
|
304
|
+
for (let transaction of blockMessage.decoded.transactions) {
|
|
305
|
+
await accountsStore.put(transaction.from, new TextEncoder().encode(String(transaction.nonce)))
|
|
306
|
+
}
|
|
307
|
+
|
|
283
308
|
// todo finish state
|
|
284
309
|
// for (const contract of contracts) {
|
|
285
310
|
// const state = await this.#machine.get(contract, 'state')
|
|
@@ -293,6 +318,10 @@ export default class Chain {
|
|
|
293
318
|
|
|
294
319
|
}
|
|
295
320
|
|
|
321
|
+
async #updateState() {
|
|
322
|
+
|
|
323
|
+
}
|
|
324
|
+
|
|
296
325
|
|
|
297
326
|
|
|
298
327
|
async participate() {
|
|
@@ -302,56 +331,72 @@ export default class Chain {
|
|
|
302
331
|
// introduce peer-reputation
|
|
303
332
|
// peerReputation(peerId)
|
|
304
333
|
// {bandwith: {up, down}, uptime}
|
|
305
|
-
|
|
306
|
-
if (await this.
|
|
334
|
+
this.participating = true
|
|
335
|
+
if (!await this.staticCall(addresses.validators, 'has', [peernet.id])) await this.createTransactionFrom(peernet.id, addresses.validators, 'addValidator', [peernet.id])
|
|
336
|
+
if (await this.hasTransactionToHandle() && !this.#runningEpoch) await this.#runEpoch()
|
|
337
|
+
|
|
338
|
+
// const runEpoch = () => setTimeout(async () => {
|
|
339
|
+
// if (await this.hasTransactionToHandle() && !this.#runningEpoch) await this.#runEpoch()
|
|
340
|
+
// runEpoch()
|
|
341
|
+
// }, 5000)
|
|
342
|
+
// runEpoch()
|
|
307
343
|
}
|
|
308
344
|
|
|
309
345
|
calculateFee(transaction) {
|
|
310
346
|
// excluded from fees
|
|
311
|
-
if (transaction.decoded.to ===
|
|
347
|
+
// if (transaction.decoded.to === addresses.validators) return 0
|
|
312
348
|
// fee per gb
|
|
313
349
|
return (transaction.encoded.length / 1024) / 1e-6
|
|
314
350
|
}
|
|
315
351
|
|
|
352
|
+
async getTransactions (transactions) {
|
|
353
|
+
return new Promise(async (resolve, reject) => {
|
|
354
|
+
let size = 0
|
|
355
|
+
const _transactions = []
|
|
356
|
+
const promises = await Promise.all(Object.values(transactions)
|
|
357
|
+
.map(tx => new TransactionMessage(new Uint8Array(tx, tx.byteOffset, tx.byteLength))))
|
|
358
|
+
|
|
359
|
+
for (let transaction of promises) {
|
|
360
|
+
size += transaction.encoded.length
|
|
361
|
+
if ((size / 1024) / 1024 <= 1.15 ) _transactions.push({...transaction.decoded, hash: await transaction.hash })
|
|
362
|
+
else return resolve(_transactions)
|
|
363
|
+
|
|
364
|
+
}
|
|
365
|
+
return resolve(_transactions)
|
|
366
|
+
})
|
|
367
|
+
|
|
368
|
+
}
|
|
316
369
|
async #createBlock() {
|
|
317
370
|
let transactions = await transactionPoolStore.get()
|
|
318
371
|
|
|
319
372
|
if (Object.keys(transactions)?.length === 0 ) return
|
|
373
|
+
|
|
320
374
|
let block = {
|
|
321
375
|
transactions: [],
|
|
322
376
|
validators: [],
|
|
323
377
|
fees: 0
|
|
324
378
|
}
|
|
325
379
|
|
|
326
|
-
let _transactions = []
|
|
327
|
-
|
|
328
380
|
// exclude failing tx
|
|
329
|
-
|
|
330
|
-
transaction = new TransactionMessage(new Uint8Array(transaction, transaction.byteOffset, transaction.byteLength))
|
|
331
|
-
|
|
332
|
-
block.fees += Number(lib.calculateFee(transaction))
|
|
333
|
-
_transactions.push({...transaction.decoded, hash: transaction.hash })
|
|
334
|
-
}
|
|
381
|
+
transactions = await this.getTransactions(transactions)
|
|
335
382
|
|
|
336
|
-
transactions =
|
|
337
|
-
|
|
338
|
-
for (let transaction of transactions) {
|
|
383
|
+
transactions = transactions.sort((a, b) => a.nonce - b.nonce)
|
|
384
|
+
for (let transaction of transactions) {
|
|
339
385
|
try {
|
|
340
386
|
await this.#executeTransaction(transaction)
|
|
341
|
-
|
|
387
|
+
block.transactions.push(transaction)
|
|
388
|
+
block.fees += Number(calculateFee(transaction))
|
|
389
|
+
await accountsStore.put(transaction.from, new TextEncoder().encode(String(transaction.nonce)))
|
|
342
390
|
} catch (e) {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
await transactionPoolStore.delete(transaction.hash)
|
|
346
|
-
|
|
391
|
+
console.error(e)
|
|
392
|
+
transaction = await new TransactionMessage(transaction)
|
|
393
|
+
await transactionPoolStore.delete(await transaction.hash)
|
|
394
|
+
console.log(e);
|
|
347
395
|
}
|
|
348
396
|
}
|
|
349
|
-
transactions = _transactions
|
|
350
397
|
// don't add empty block
|
|
351
|
-
if (transactions.length === 0) return
|
|
352
|
-
|
|
353
|
-
block.transactions = transactions
|
|
354
|
-
const validators = await this.staticCall(lib.validators, 'validators')
|
|
398
|
+
if (block.transactions.length === 0) return
|
|
399
|
+
const validators = await this.staticCall(addresses.validators, 'validators')
|
|
355
400
|
console.log({validators});
|
|
356
401
|
// block.validators = Object.keys(block.validators).reduce((set, key) => {
|
|
357
402
|
// if (block.validators[key].active) {
|
|
@@ -368,7 +413,7 @@ export default class Chain {
|
|
|
368
413
|
if (validators[validator].active) {
|
|
369
414
|
const peer = peers[validator]
|
|
370
415
|
if (peer && peer.connected) {
|
|
371
|
-
let data = new BWRequestMessage()
|
|
416
|
+
let data = await new BWRequestMessage()
|
|
372
417
|
const node = await peernet.prepareMessage(validator, data.encoded)
|
|
373
418
|
try {
|
|
374
419
|
const bw = await peer.request(node.encoded)
|
|
@@ -392,7 +437,7 @@ export default class Chain {
|
|
|
392
437
|
|
|
393
438
|
}
|
|
394
439
|
|
|
395
|
-
console.log(block.validators);
|
|
440
|
+
console.log({validators: block.validators});
|
|
396
441
|
|
|
397
442
|
block.reward = 150
|
|
398
443
|
block.validators = block.validators.map(validator => {
|
|
@@ -400,7 +445,7 @@ export default class Chain {
|
|
|
400
445
|
delete validator.bw
|
|
401
446
|
return validator
|
|
402
447
|
})
|
|
403
|
-
// block.validators =
|
|
448
|
+
// block.validators = calculateValidatorReward(block.validators, block.fees)
|
|
404
449
|
|
|
405
450
|
block.index = this.lastBlock?.index
|
|
406
451
|
if (block.index === undefined) block.index = 0
|
|
@@ -424,25 +469,48 @@ export default class Chain {
|
|
|
424
469
|
block.fees = Number.parseFloat(String(block.fees)).toFixed(decimals)
|
|
425
470
|
|
|
426
471
|
try {
|
|
427
|
-
let blockMessage = new BlockMessage(block)
|
|
428
|
-
|
|
472
|
+
let blockMessage = await new BlockMessage(block)
|
|
473
|
+
const hash = await blockMessage.hash
|
|
474
|
+
await Promise.all(blockMessage.decoded.transactions
|
|
475
|
+
.map(async transaction => transactionPoolStore.delete(await transaction.hash)))
|
|
476
|
+
|
|
477
|
+
this.#lastBlock = { hash, ...blockMessage.decoded }
|
|
478
|
+
await blockStore.put(hash, blockMessage.encoded)
|
|
479
|
+
await chainStore.put('lastBlock', new TextEncoder().encode(hash))
|
|
480
|
+
debug(`created block: ${hash}`)
|
|
481
|
+
|
|
429
482
|
peernet.publish('add-block', blockMessage.encoded)
|
|
430
|
-
this.#
|
|
483
|
+
this.#updateState(blockMessage)
|
|
431
484
|
} catch (e) {
|
|
485
|
+
console.log(e);
|
|
432
486
|
throw Error(`invalid block ${block}`)
|
|
433
487
|
}
|
|
434
488
|
// data = await this.#machine.execute(to, method, params)
|
|
435
489
|
// transactionStore.put(message.hash, message.encoded)
|
|
436
490
|
}
|
|
437
491
|
|
|
438
|
-
async
|
|
492
|
+
async promiseTransactions(transactions) {
|
|
493
|
+
transactions = await Promise.all(transactions.map(tx => new TransactionMessage(tx)))
|
|
494
|
+
return transactions
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
async promiseTransactionsContent(transactions) {
|
|
498
|
+
transactions = await Promise.all(transactions.map(tx => new Promise(async (resolve, reject) => {
|
|
499
|
+
resolve({ ...tx.decoded, hash: await tx.hash })
|
|
500
|
+
})))
|
|
501
|
+
|
|
502
|
+
return transactions
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
async #getNonceFallback(address) {
|
|
439
506
|
let transactions = await transactionPoolStore.get()
|
|
440
|
-
transactions =
|
|
507
|
+
transactions = await this.promiseTransactions(Object.values(transactions))
|
|
441
508
|
transactions = transactions.filter(tx => tx.decoded.from === address)
|
|
442
|
-
transactions =
|
|
509
|
+
transactions = await this.promiseTransactionsContent(transactions)
|
|
510
|
+
|
|
443
511
|
if (this.lastBlock && transactions.length === 0) {
|
|
444
512
|
let block = await peernet.get(this.lastBlock.hash)
|
|
445
|
-
block = new BlockMessage(block)
|
|
513
|
+
block = await new BlockMessage(block)
|
|
446
514
|
|
|
447
515
|
// for (let tx of block.decoded?.transactions) {
|
|
448
516
|
// tx = await peernet.get(tx, 'transaction')
|
|
@@ -451,7 +519,7 @@ export default class Chain {
|
|
|
451
519
|
transactions = transactions.filter(tx => tx.from === address)
|
|
452
520
|
while (transactions.length === 0 && block.decoded.index !== 0) {
|
|
453
521
|
block = await blockStore.get(block.decoded.previousHash)
|
|
454
|
-
block = new BlockMessage(block)
|
|
522
|
+
block = await new BlockMessage(block)
|
|
455
523
|
transactions = block.decoded.transactions.filter(tx => tx.from === address)
|
|
456
524
|
}
|
|
457
525
|
|
|
@@ -462,6 +530,16 @@ export default class Chain {
|
|
|
462
530
|
return transactions[transactions.length - 1].nonce
|
|
463
531
|
}
|
|
464
532
|
|
|
533
|
+
async getNonce(address) {
|
|
534
|
+
if (!await accountsStore.has(address)) {
|
|
535
|
+
const nonce = await this.#getNonceFallback(address)
|
|
536
|
+
await accountsStore.put(address, new TextEncoder().encode(String(nonce)))
|
|
537
|
+
}
|
|
538
|
+
let nonce = await accountsStore.get(address)
|
|
539
|
+
nonce = new TextDecoder().decode(nonce)
|
|
540
|
+
return Number(nonce)
|
|
541
|
+
}
|
|
542
|
+
|
|
465
543
|
/**
|
|
466
544
|
* whenever method = createContract params should hold the contract hash
|
|
467
545
|
*
|
|
@@ -473,9 +551,74 @@ export default class Chain {
|
|
|
473
551
|
* @param {Array} params - array of paramters to apply to the contract method
|
|
474
552
|
* @param {Number} nonce - total transaction count [optional]
|
|
475
553
|
*/
|
|
476
|
-
createTransaction(to, method, params, nonce) {
|
|
554
|
+
async createTransaction(to, method, params, nonce, signature) {
|
|
477
555
|
return this.createTransactionFrom(peernet.id, to, method, params, nonce)
|
|
478
556
|
}
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
*
|
|
562
|
+
* @param {Object} transaction {}
|
|
563
|
+
* @param {String} transaction.from address
|
|
564
|
+
* @param {String} transaction.to address
|
|
565
|
+
* @param {Object} transaction.params {}
|
|
566
|
+
* @param {String} transaction.params.method get, call
|
|
567
|
+
* @param {Buffer} transaction.params.data
|
|
568
|
+
* @returns
|
|
569
|
+
*/
|
|
570
|
+
async createTransactionHash(transaction) {
|
|
571
|
+
// todo: validate
|
|
572
|
+
const peernetHash = await new CodecHash(transaction, {name: 'transaction-message'})
|
|
573
|
+
return peernetHash.digest
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* @params {object} transaction -
|
|
578
|
+
* @params {object} wallet - any wallet/signer that supports sign(RAWtransaction)
|
|
579
|
+
*/
|
|
580
|
+
async #signTransaction (transaction, wallet) {
|
|
581
|
+
return wallet.sign(await this.createTransactionHash(transaction))
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
async signTransaction(transaction, signer) {
|
|
585
|
+
let identity = await walletStore.get('identity')
|
|
586
|
+
identity = JSON.parse(new TextDecoder().decode(identity))
|
|
587
|
+
const wallet = new MultiWallet(peernet.network)
|
|
588
|
+
wallet.recover(identity.mnemonic)
|
|
589
|
+
const account = wallet.account(0).external(0)
|
|
590
|
+
transaction.signature = await this.#signTransaction(transaction, wallet)
|
|
591
|
+
transaction.signature = bs32.encode(transaction.signature)
|
|
592
|
+
return transaction
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
*
|
|
597
|
+
* @param {Object} transaction
|
|
598
|
+
* @param {Address} transaction.from
|
|
599
|
+
* @param {Address} transaction.to
|
|
600
|
+
* @param {String} transaction.method
|
|
601
|
+
* @param {Array} transaction.params
|
|
602
|
+
* @param {Number} transaction.nonce
|
|
603
|
+
*
|
|
604
|
+
* @returns {Object} transaction
|
|
605
|
+
*/
|
|
606
|
+
async createRawTransaction(transaction) {
|
|
607
|
+
if (!transaction.from) transaction.from = peernet.id
|
|
608
|
+
transaction.timestamp = Date.now()
|
|
609
|
+
|
|
610
|
+
if (transaction.nonce === undefined) {
|
|
611
|
+
transaction.nonce = await this.getNonce(transaction.from)
|
|
612
|
+
transaction.nonce += 1
|
|
613
|
+
await accountsStore.put(transaction.from, new TextEncoder().encode(String(transaction.nonce)))
|
|
614
|
+
} else {
|
|
615
|
+
let nonce = await accountsStore.get(transaction.from)
|
|
616
|
+
nonce = new TextDecoder().decode(nonce)
|
|
617
|
+
if (transaction.nonce < nonce) throw Error(`a transaction with a higher nonce already exists`)
|
|
618
|
+
if (transaction.nonce === nonce) throw Error(`a transaction with the same nonce already exists`)
|
|
619
|
+
}
|
|
620
|
+
return transaction
|
|
621
|
+
}
|
|
479
622
|
/**
|
|
480
623
|
* every tx done is trough contracts so no need for amount
|
|
481
624
|
* data is undefined when nothing is returned
|
|
@@ -488,31 +631,41 @@ export default class Chain {
|
|
|
488
631
|
* @param {Number} nonce - total transaction count [optional]
|
|
489
632
|
*/
|
|
490
633
|
async createTransactionFrom(from, to, method, params, nonce) {
|
|
491
|
-
if (nonce === undefined) {
|
|
492
|
-
nonce = await this.getNonce(from)
|
|
493
|
-
nonce += 1
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
let data
|
|
497
|
-
let message = new TransactionMessage({timestamp: new Date().getTime(), from, to, nonce, method, params})
|
|
498
634
|
try {
|
|
635
|
+
|
|
636
|
+
const rawTransaction = await this.createRawTransaction({from, to, nonce, method, params})
|
|
637
|
+
const transaction = await this.signTransaction(rawTransaction, from)
|
|
638
|
+
const message = await new TransactionMessage(transaction)
|
|
639
|
+
|
|
640
|
+
let data
|
|
499
641
|
// await transactionPoolStore.put(message.hash, new TextEncoder().encode(JSON.stringify({signature, message: message.encoded})))
|
|
500
|
-
|
|
642
|
+
const wait = () => new Promise(async (resolve, reject) => {
|
|
643
|
+
if (pubsub.subscribers[`transaction.completed.${await message.hash}`]) {
|
|
644
|
+
const result = pubsub.subscribers[`transaction.completed.${await message.hash}`].value
|
|
645
|
+
result.status === 'fulfilled' ? resolve(await result.hash) : reject({hash: await result.hash, error: result.error})
|
|
646
|
+
} else {
|
|
647
|
+
const completed = async result => {
|
|
648
|
+
result.status === 'fulfilled' ? resolve(await result.hash) : reject({hash: await result.hash, error: result.error})
|
|
649
|
+
|
|
650
|
+
setTimeout(async () => {
|
|
651
|
+
pubsub.unsubscribe(`transaction.completed.${await message.hash}`, completed)
|
|
652
|
+
}, 10000)
|
|
653
|
+
}
|
|
654
|
+
pubsub.subscribe(`transaction.completed.${await message.hash}`, completed)
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
})
|
|
659
|
+
|
|
660
|
+
await transactionPoolStore.put(await message.hash, message.encoded)
|
|
501
661
|
peernet.publish('add-transaction', message.encoded)
|
|
662
|
+
this.#addTransaction(message.encoded)
|
|
663
|
+
return {hash: await message.hash, data, fee: await calculateFee(message.decoded), wait}
|
|
502
664
|
} catch (e) {
|
|
665
|
+
console.log(e);
|
|
503
666
|
throw e
|
|
504
667
|
}
|
|
505
|
-
|
|
506
|
-
const completed = result => {
|
|
507
|
-
result.status === 'fulfilled' ? resolve(result.hash) : reject({hash: result.hash, error: result.error})
|
|
508
|
-
|
|
509
|
-
pubsub.unsubscribe(`transaction.completed.${message.hash}`, completed)
|
|
510
|
-
}
|
|
511
|
-
pubsub.subscribe(`transaction.completed.${message.hash}`, completed)
|
|
512
|
-
})
|
|
513
|
-
|
|
514
|
-
if (await this.hasTransactionToHandle() && !this.#runningEpoch) this.#runEpoch()
|
|
515
|
-
return {hash: message.hash, data, fee: lib.calculateFee(message), wait}
|
|
668
|
+
|
|
516
669
|
}
|
|
517
670
|
|
|
518
671
|
async createContractMessage(creator, contract, constructorParameters = []) {
|
|
@@ -524,8 +677,8 @@ export default class Chain {
|
|
|
524
677
|
}
|
|
525
678
|
|
|
526
679
|
async createContractAddress(creator, contract, constructorParameters = []) {
|
|
527
|
-
|
|
528
|
-
|
|
680
|
+
contract = await this.createContractMessage(creator, contract, constructorParameters)
|
|
681
|
+
return contract.hash
|
|
529
682
|
}
|
|
530
683
|
|
|
531
684
|
/**
|
|
@@ -538,7 +691,7 @@ export default class Chain {
|
|
|
538
691
|
const hash = await this.createContractAddress(creator, contract, params)
|
|
539
692
|
|
|
540
693
|
try {
|
|
541
|
-
const tx = await this.createTransactionFrom(peernet.id,
|
|
694
|
+
const tx = await this.createTransactionFrom(peernet.id, addresses.contractFactory, 'deployContract', [hash, creator, contract, constructorParameters])
|
|
542
695
|
} catch (e) {
|
|
543
696
|
throw e
|
|
544
697
|
}
|
|
@@ -585,15 +738,15 @@ export default class Chain {
|
|
|
585
738
|
}
|
|
586
739
|
|
|
587
740
|
mint(to, amount) {
|
|
588
|
-
return this.call(
|
|
741
|
+
return this.call(addresses.nativeToken, 'mint', [to, amount])
|
|
589
742
|
}
|
|
590
743
|
|
|
591
744
|
transfer(from, to, amount) {
|
|
592
|
-
return this.call(
|
|
745
|
+
return this.call(addresses.nativeToken, 'transfer', [from, to, amount])
|
|
593
746
|
}
|
|
594
747
|
|
|
595
748
|
get balances() {
|
|
596
|
-
return this.staticCall(
|
|
749
|
+
return this.staticCall(addresses.nativeToken, 'balances')
|
|
597
750
|
}
|
|
598
751
|
|
|
599
752
|
deleteAll() {
|
|
@@ -610,6 +763,6 @@ export default class Chain {
|
|
|
610
763
|
* @example chain.lookup('myCoolContractName') // qmqsfddfdgfg...
|
|
611
764
|
*/
|
|
612
765
|
lookup(name) {
|
|
613
|
-
return this.call(
|
|
766
|
+
return this.call(addresses.nameService, 'lookup', [name])
|
|
614
767
|
}
|
|
615
768
|
}
|
package/src/config/config.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import main from './main'
|
|
2
2
|
import protocol from './protocol'
|
|
3
|
-
import {
|
|
3
|
+
import { promisify } from 'util'
|
|
4
|
+
import { readFile, writeFile } from 'fs'
|
|
5
|
+
|
|
6
|
+
const read = promisify(readFile)
|
|
7
|
+
const write = promisify(writeFile)
|
|
4
8
|
|
|
5
9
|
export default async () => {
|
|
6
|
-
let config = { ...main,
|
|
10
|
+
let config = { ...main, protocol }
|
|
7
11
|
try {
|
|
8
12
|
let data = await read(main.configPath)
|
|
9
13
|
data = JSON.parse(data.toString())
|