@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
|
@@ -80,11 +80,11 @@
|
|
|
80
80
|
Resources
|
|
81
81
|
</h3>
|
|
82
82
|
|
|
83
|
-
<a href="https://github.com/arteontoken/monorepo/chain">github</a>
|
|
83
|
+
<a href="https://github.com/arteontoken/monorepo/tree/main/chain">github</a>
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
<h3 id="global-nav">Global</h3><ul><li><a href="global.html#addContract">addContract</a></li><li><a href="global.html#createTransaction">createTransaction</a></li><li><a href="global.html#createTransactionFrom">createTransactionFrom</a></li><li><a href="global.html#deployContract">deployContract</a></li><li><a href="global.html#lookup">lookup</a></li><li><a href="global.html#state">state</a></li></ul>
|
|
87
|
+
<h3 id="global-nav">Global</h3><ul><li><a href="global.html#addContract">addContract</a></li><li><a href="global.html#createRawTransaction">createRawTransaction</a></li><li><a href="global.html#createTransaction">createTransaction</a></li><li><a href="global.html#createTransactionFrom">createTransactionFrom</a></li><li><a href="global.html#createTransactionHash">createTransactionHash</a></li><li><a href="global.html#deployContract">deployContract</a></li><li><a href="global.html#lookup">lookup</a></li><li><a href="global.html#state">state</a></li></ul>
|
|
88
88
|
</nav>
|
|
89
89
|
|
|
90
90
|
<div id="main">
|
|
@@ -100,12 +100,18 @@
|
|
|
100
100
|
<section>
|
|
101
101
|
<article>
|
|
102
102
|
<pre class="prettyprint source linenums"><code>import { BigNumber, formatUnits, parseUnits } from '@leofcoin/utils'
|
|
103
|
-
import Machine from './machine'
|
|
104
|
-
import
|
|
103
|
+
import Machine from './machine.js'
|
|
104
|
+
import { ContractMessage, TransactionMessage, BlockMessage, BWMessage, BWRequestMessage } from './../../messages/src/messages'
|
|
105
|
+
import { addresses } from './../../addresses/src/addresses'
|
|
106
|
+
import { contractFactoryMessage, nativeTokenMessage, validatorsMessage, nameServiceMessage, calculateFee } from './../../lib/src/lib'
|
|
107
|
+
import MultiWallet from '@leofcoin/multi-wallet'
|
|
108
|
+
import {CodecHash} from '@leofcoin/codec-format-interface/dist/index'
|
|
109
|
+
import bs32 from '@vandeurenglenn/base32'
|
|
110
|
+
import config from './config/config'
|
|
111
|
+
import { formatBytes } from '../../utils/src/utils.js'
|
|
105
112
|
|
|
106
113
|
globalThis.BigNumber = BigNumber
|
|
107
114
|
|
|
108
|
-
const { ContractMessage, TransactionMessage, BlockMessage, BWMessage, BWRequestMessage } = lib
|
|
109
115
|
// check if browser or local
|
|
110
116
|
export default class Chain {
|
|
111
117
|
#validators = []
|
|
@@ -127,7 +133,7 @@ export default class Chain {
|
|
|
127
133
|
}
|
|
128
134
|
|
|
129
135
|
get nativeToken() {
|
|
130
|
-
return
|
|
136
|
+
return addresses.nativeToken
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
get validators() {
|
|
@@ -140,28 +146,39 @@ export default class Chain {
|
|
|
140
146
|
|
|
141
147
|
async hasTransactionToHandle() {
|
|
142
148
|
const size = await transactionPoolStore.size()
|
|
149
|
+
console.log({size});
|
|
143
150
|
if (size > 0) return true
|
|
144
151
|
return false
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
async #runEpoch() {
|
|
148
|
-
|
|
155
|
+
this.#runningEpoch = true
|
|
156
|
+
console.log('epoch');
|
|
157
|
+
const validators = await this.staticCall(addresses.validators, 'validators')
|
|
149
158
|
if (!validators[peernet.id]?.active) return
|
|
159
|
+
console.log('active');
|
|
150
160
|
|
|
151
|
-
|
|
161
|
+
|
|
152
162
|
const start = new Date().getTime()
|
|
153
|
-
|
|
163
|
+
try {
|
|
164
|
+
await this.#createBlock()
|
|
165
|
+
} catch (e) {
|
|
166
|
+
console.error(e);
|
|
167
|
+
}
|
|
168
|
+
|
|
154
169
|
const end = new Date().getTime()
|
|
155
|
-
console.log((end - start) / 1000 + ' s');
|
|
170
|
+
console.log(((end - start) / 1000) + ' s');
|
|
171
|
+
|
|
156
172
|
if (await this.hasTransactionToHandle()) return this.#runEpoch()
|
|
157
173
|
this.#runningEpoch = false
|
|
174
|
+
// if (await this.hasTransactionToHandle() && !this.#runningEpoch) return this.#runEpoch()
|
|
158
175
|
}
|
|
159
176
|
|
|
160
177
|
async #setup() {
|
|
161
|
-
await contractStore.put(
|
|
162
|
-
await contractStore.put(
|
|
163
|
-
await contractStore.put(
|
|
164
|
-
await contractStore.put(
|
|
178
|
+
await contractStore.put(addresses.contractFactory, contractFactoryMessage)
|
|
179
|
+
await contractStore.put(addresses.nativeToken, nativeTokenMessage)
|
|
180
|
+
await contractStore.put(addresses.validators, validatorsMessage)
|
|
181
|
+
await contractStore.put(addresses.nameService, nameServiceMessage)
|
|
165
182
|
console.log('handle native contracts');
|
|
166
183
|
// handle native contracts
|
|
167
184
|
}
|
|
@@ -180,7 +197,6 @@ export default class Chain {
|
|
|
180
197
|
|
|
181
198
|
promises = await Promise.allSettled(promises)
|
|
182
199
|
promises = promises.reduce((set, c) => {
|
|
183
|
-
console.log({c});
|
|
184
200
|
if (c.index > set.index) {
|
|
185
201
|
set.index = c.index
|
|
186
202
|
set.hash = c.hash
|
|
@@ -193,7 +209,8 @@ export default class Chain {
|
|
|
193
209
|
async #init() {
|
|
194
210
|
// this.node = await new Node()
|
|
195
211
|
this.participants = []
|
|
196
|
-
|
|
212
|
+
this.participating = false
|
|
213
|
+
const initialized = await contractStore.has(addresses.contractFactory)
|
|
197
214
|
if (!initialized) await this.#setup()
|
|
198
215
|
|
|
199
216
|
this.#machine = await new Machine()
|
|
@@ -202,8 +219,8 @@ export default class Chain {
|
|
|
202
219
|
try {
|
|
203
220
|
let localBlock = await chainStore.get('lastBlock')
|
|
204
221
|
localBlock = await peernet.get(new TextDecoder().decode(localBlock))
|
|
205
|
-
localBlock = new BlockMessage(localBlock)
|
|
206
|
-
this.#lastBlock = {...localBlock.decoded, hash: localBlock.hash}
|
|
222
|
+
localBlock = await await new BlockMessage(localBlock)
|
|
223
|
+
this.#lastBlock = {...localBlock.decoded, hash: await localBlock.hash}
|
|
207
224
|
// console.log(this.lastBlock.decoded.transactions);
|
|
208
225
|
} catch (e) {
|
|
209
226
|
await this.#sync()
|
|
@@ -219,15 +236,7 @@ export default class Chain {
|
|
|
219
236
|
|
|
220
237
|
peernet.subscribe('add-block', this.#addBlock.bind(this))
|
|
221
238
|
|
|
222
|
-
peernet.subscribe('add-transaction',
|
|
223
|
-
try {
|
|
224
|
-
transaction = new TransactionMessage(transaction)
|
|
225
|
-
await transactionPoolStore.put(transaction.hash, transaction.encoded)
|
|
226
|
-
if (await this.hasTransactionToHandle() && !this.#runningEpoch) return this.#runEpoch()
|
|
227
|
-
} catch (e) {
|
|
228
|
-
throw Error('invalid transaction')
|
|
229
|
-
}
|
|
230
|
-
})
|
|
239
|
+
peernet.subscribe('add-transaction', this.#addTransaction.bind(this))
|
|
231
240
|
|
|
232
241
|
pubsub.subscribe('peer:connected', this.#peerConnected.bind(this))
|
|
233
242
|
|
|
@@ -260,28 +269,41 @@ export default class Chain {
|
|
|
260
269
|
const end = this.#blocks.length
|
|
261
270
|
const start = (this.#blocks.length) - blocksSynced
|
|
262
271
|
await this.#loadBlocks(this.#blocks)
|
|
263
|
-
const message = new BlockMessage(this.lastBlock)
|
|
264
|
-
await blockStore.put(message.hash, message.encoded)
|
|
272
|
+
const message = await new BlockMessage(this.lastBlock)
|
|
273
|
+
await blockStore.put(await message.hash, message.encoded)
|
|
265
274
|
await chainStore.put('lastBlock', new TextEncoder().encode(this.lastBlock.hash))
|
|
266
275
|
}
|
|
267
276
|
}
|
|
268
277
|
|
|
269
|
-
|
|
270
|
-
|
|
278
|
+
#epochTimeout
|
|
279
|
+
|
|
280
|
+
async #addTransaction(transaction) {
|
|
281
|
+
try {
|
|
282
|
+
transaction = await new TransactionMessage(transaction)
|
|
283
|
+
const has = await transactionPoolStore.has(await transaction.hash)
|
|
284
|
+
if (!has) await transactionPoolStore.put(await transaction.hash, transaction.encoded)
|
|
285
|
+
if (this.participating && !this.#runningEpoch) this.#runEpoch()
|
|
286
|
+
} catch (e) {
|
|
287
|
+
throw Error('invalid transaction')
|
|
271
288
|
}
|
|
289
|
+
}
|
|
272
290
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
291
|
+
async #lastBlockHandler() {
|
|
292
|
+
return new peernet.protos['peernet-response']({response: new TextEncoder().encode(JSON.stringify({ hash: this.lastBlock?.hash, index: this.lastBlock?.index }))})
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
async resolveBlock(hash) {
|
|
296
|
+
let block = await peernet.get(hash, 'block')
|
|
297
|
+
if (!await peernet.has(hash, 'block')) await peernet.put(hash, block, 'block')
|
|
298
|
+
block = await new BlockMessage(block)
|
|
299
|
+
const size = block.encoded.length || block.encoded.byteLength
|
|
300
|
+
block = {...block.decoded, hash}
|
|
301
|
+
this.#blocks[block.index] = block
|
|
302
|
+
console.log(`loaded block: ${hash} @${block.index} ${formatBytes(size)}`);
|
|
303
|
+
if (block.index !== 0) {
|
|
304
|
+
return this.resolveBlock(block.previousHash)
|
|
284
305
|
}
|
|
306
|
+
}
|
|
285
307
|
|
|
286
308
|
async resolveBlocks() {
|
|
287
309
|
try {
|
|
@@ -346,7 +368,7 @@ export default class Chain {
|
|
|
346
368
|
}
|
|
347
369
|
|
|
348
370
|
async #addBlock(block) {
|
|
349
|
-
const blockMessage = new BlockMessage(block)
|
|
371
|
+
const blockMessage = await new BlockMessage(block)
|
|
350
372
|
// if (!Buffer.isBuffer(block)) block = Buffer.from(block, 'hex')
|
|
351
373
|
// const transactionJob = async transaction => {
|
|
352
374
|
// try {
|
|
@@ -361,15 +383,15 @@ export default class Chain {
|
|
|
361
383
|
// transaction = new TransactionMessage(transaction)
|
|
362
384
|
// return transaction
|
|
363
385
|
// }
|
|
364
|
-
await Promise.all(blockMessage.decoded.transactions
|
|
365
|
-
.map(transaction => transactionPoolStore.delete(transaction.hash)))
|
|
366
|
-
|
|
386
|
+
const deletions = await Promise.all(blockMessage.decoded.transactions
|
|
387
|
+
.map(async transaction => transactionPoolStore.delete(await transaction.hash)))
|
|
388
|
+
const hash = await blockMessage.hash
|
|
367
389
|
// let transactions = blockMessage.decoded.transactions.map(tx => transactionJob(tx))
|
|
368
390
|
// transactions = await Promise.all(transactions)
|
|
369
|
-
this.#lastBlock = {
|
|
370
|
-
await blockStore.put(
|
|
371
|
-
await chainStore.put('lastBlock', new TextEncoder().encode(
|
|
372
|
-
debug(`added block: ${
|
|
391
|
+
this.#lastBlock = { hash, ...blockMessage.decoded }
|
|
392
|
+
await blockStore.put(hash, blockMessage.encoded)
|
|
393
|
+
await chainStore.put('lastBlock', new TextEncoder().encode(hash))
|
|
394
|
+
debug(`added block: ${hash}`)
|
|
373
395
|
let promises = []
|
|
374
396
|
let contracts = []
|
|
375
397
|
for (let transaction of blockMessage.decoded.transactions) {
|
|
@@ -380,7 +402,10 @@ export default class Chain {
|
|
|
380
402
|
}
|
|
381
403
|
try {
|
|
382
404
|
promises = await Promise.allSettled(promises)
|
|
383
|
-
|
|
405
|
+
for (let transaction of blockMessage.decoded.transactions) {
|
|
406
|
+
await accountsStore.put(transaction.from, new TextEncoder().encode(String(transaction.nonce)))
|
|
407
|
+
}
|
|
408
|
+
|
|
384
409
|
// todo finish state
|
|
385
410
|
// for (const contract of contracts) {
|
|
386
411
|
// const state = await this.#machine.get(contract, 'state')
|
|
@@ -394,6 +419,10 @@ export default class Chain {
|
|
|
394
419
|
|
|
395
420
|
}
|
|
396
421
|
|
|
422
|
+
async #updateState() {
|
|
423
|
+
|
|
424
|
+
}
|
|
425
|
+
|
|
397
426
|
|
|
398
427
|
|
|
399
428
|
async participate() {
|
|
@@ -403,56 +432,72 @@ export default class Chain {
|
|
|
403
432
|
// introduce peer-reputation
|
|
404
433
|
// peerReputation(peerId)
|
|
405
434
|
// {bandwith: {up, down}, uptime}
|
|
406
|
-
|
|
407
|
-
if (await this.
|
|
435
|
+
this.participating = true
|
|
436
|
+
if (!await this.staticCall(addresses.validators, 'has', [peernet.id])) await this.createTransactionFrom(peernet.id, addresses.validators, 'addValidator', [peernet.id])
|
|
437
|
+
if (await this.hasTransactionToHandle() && !this.#runningEpoch) await this.#runEpoch()
|
|
438
|
+
|
|
439
|
+
// const runEpoch = () => setTimeout(async () => {
|
|
440
|
+
// if (await this.hasTransactionToHandle() && !this.#runningEpoch) await this.#runEpoch()
|
|
441
|
+
// runEpoch()
|
|
442
|
+
// }, 5000)
|
|
443
|
+
// runEpoch()
|
|
408
444
|
}
|
|
409
445
|
|
|
410
446
|
calculateFee(transaction) {
|
|
411
447
|
// excluded from fees
|
|
412
|
-
if (transaction.decoded.to ===
|
|
448
|
+
// if (transaction.decoded.to === addresses.validators) return 0
|
|
413
449
|
// fee per gb
|
|
414
450
|
return (transaction.encoded.length / 1024) / 1e-6
|
|
415
451
|
}
|
|
416
452
|
|
|
453
|
+
async getTransactions (transactions) {
|
|
454
|
+
return new Promise(async (resolve, reject) => {
|
|
455
|
+
let size = 0
|
|
456
|
+
const _transactions = []
|
|
457
|
+
const promises = await Promise.all(Object.values(transactions)
|
|
458
|
+
.map(tx => new TransactionMessage(new Uint8Array(tx, tx.byteOffset, tx.byteLength))))
|
|
459
|
+
|
|
460
|
+
for (let transaction of promises) {
|
|
461
|
+
size += transaction.encoded.length
|
|
462
|
+
if ((size / 1024) / 1024 <= 1.15 ) _transactions.push({...transaction.decoded, hash: await transaction.hash })
|
|
463
|
+
else return resolve(_transactions)
|
|
464
|
+
|
|
465
|
+
}
|
|
466
|
+
return resolve(_transactions)
|
|
467
|
+
})
|
|
468
|
+
|
|
469
|
+
}
|
|
417
470
|
async #createBlock() {
|
|
418
471
|
let transactions = await transactionPoolStore.get()
|
|
419
472
|
|
|
420
473
|
if (Object.keys(transactions)?.length === 0 ) return
|
|
474
|
+
|
|
421
475
|
let block = {
|
|
422
476
|
transactions: [],
|
|
423
477
|
validators: [],
|
|
424
478
|
fees: 0
|
|
425
479
|
}
|
|
426
480
|
|
|
427
|
-
let _transactions = []
|
|
428
|
-
|
|
429
481
|
// exclude failing tx
|
|
430
|
-
|
|
431
|
-
transaction = new TransactionMessage(new Uint8Array(transaction, transaction.byteOffset, transaction.byteLength))
|
|
432
|
-
|
|
433
|
-
block.fees += Number(lib.calculateFee(transaction))
|
|
434
|
-
_transactions.push({...transaction.decoded, hash: transaction.hash })
|
|
435
|
-
}
|
|
482
|
+
transactions = await this.getTransactions(transactions)
|
|
436
483
|
|
|
437
|
-
transactions =
|
|
438
|
-
|
|
439
|
-
for (let transaction of transactions) {
|
|
484
|
+
transactions = transactions.sort((a, b) => a.nonce - b.nonce)
|
|
485
|
+
for (let transaction of transactions) {
|
|
440
486
|
try {
|
|
441
487
|
await this.#executeTransaction(transaction)
|
|
442
|
-
|
|
488
|
+
block.transactions.push(transaction)
|
|
489
|
+
block.fees += Number(calculateFee(transaction))
|
|
490
|
+
await accountsStore.put(transaction.from, new TextEncoder().encode(String(transaction.nonce)))
|
|
443
491
|
} catch (e) {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
await transactionPoolStore.delete(transaction.hash)
|
|
447
|
-
|
|
492
|
+
console.error(e)
|
|
493
|
+
transaction = await new TransactionMessage(transaction)
|
|
494
|
+
await transactionPoolStore.delete(await transaction.hash)
|
|
495
|
+
console.log(e);
|
|
448
496
|
}
|
|
449
497
|
}
|
|
450
|
-
transactions = _transactions
|
|
451
498
|
// don't add empty block
|
|
452
|
-
if (transactions.length === 0) return
|
|
453
|
-
|
|
454
|
-
block.transactions = transactions
|
|
455
|
-
const validators = await this.staticCall(lib.validators, 'validators')
|
|
499
|
+
if (block.transactions.length === 0) return
|
|
500
|
+
const validators = await this.staticCall(addresses.validators, 'validators')
|
|
456
501
|
console.log({validators});
|
|
457
502
|
// block.validators = Object.keys(block.validators).reduce((set, key) => {
|
|
458
503
|
// if (block.validators[key].active) {
|
|
@@ -469,7 +514,7 @@ export default class Chain {
|
|
|
469
514
|
if (validators[validator].active) {
|
|
470
515
|
const peer = peers[validator]
|
|
471
516
|
if (peer && peer.connected) {
|
|
472
|
-
let data = new BWRequestMessage()
|
|
517
|
+
let data = await new BWRequestMessage()
|
|
473
518
|
const node = await peernet.prepareMessage(validator, data.encoded)
|
|
474
519
|
try {
|
|
475
520
|
const bw = await peer.request(node.encoded)
|
|
@@ -493,7 +538,7 @@ export default class Chain {
|
|
|
493
538
|
|
|
494
539
|
}
|
|
495
540
|
|
|
496
|
-
console.log(block.validators);
|
|
541
|
+
console.log({validators: block.validators});
|
|
497
542
|
|
|
498
543
|
block.reward = 150
|
|
499
544
|
block.validators = block.validators.map(validator => {
|
|
@@ -501,7 +546,7 @@ export default class Chain {
|
|
|
501
546
|
delete validator.bw
|
|
502
547
|
return validator
|
|
503
548
|
})
|
|
504
|
-
// block.validators =
|
|
549
|
+
// block.validators = calculateValidatorReward(block.validators, block.fees)
|
|
505
550
|
|
|
506
551
|
block.index = this.lastBlock?.index
|
|
507
552
|
if (block.index === undefined) block.index = 0
|
|
@@ -525,25 +570,48 @@ export default class Chain {
|
|
|
525
570
|
block.fees = Number.parseFloat(String(block.fees)).toFixed(decimals)
|
|
526
571
|
|
|
527
572
|
try {
|
|
528
|
-
let blockMessage = new BlockMessage(block)
|
|
529
|
-
|
|
573
|
+
let blockMessage = await new BlockMessage(block)
|
|
574
|
+
const hash = await blockMessage.hash
|
|
575
|
+
await Promise.all(blockMessage.decoded.transactions
|
|
576
|
+
.map(async transaction => transactionPoolStore.delete(await transaction.hash)))
|
|
577
|
+
|
|
578
|
+
this.#lastBlock = { hash, ...blockMessage.decoded }
|
|
579
|
+
await blockStore.put(hash, blockMessage.encoded)
|
|
580
|
+
await chainStore.put('lastBlock', new TextEncoder().encode(hash))
|
|
581
|
+
debug(`created block: ${hash}`)
|
|
582
|
+
|
|
530
583
|
peernet.publish('add-block', blockMessage.encoded)
|
|
531
|
-
this.#
|
|
584
|
+
this.#updateState(blockMessage)
|
|
532
585
|
} catch (e) {
|
|
586
|
+
console.log(e);
|
|
533
587
|
throw Error(`invalid block ${block}`)
|
|
534
588
|
}
|
|
535
589
|
// data = await this.#machine.execute(to, method, params)
|
|
536
590
|
// transactionStore.put(message.hash, message.encoded)
|
|
537
591
|
}
|
|
538
592
|
|
|
539
|
-
async
|
|
593
|
+
async promiseTransactions(transactions) {
|
|
594
|
+
transactions = await Promise.all(transactions.map(tx => new TransactionMessage(tx)))
|
|
595
|
+
return transactions
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
async promiseTransactionsContent(transactions) {
|
|
599
|
+
transactions = await Promise.all(transactions.map(tx => new Promise(async (resolve, reject) => {
|
|
600
|
+
resolve({ ...tx.decoded, hash: await tx.hash })
|
|
601
|
+
})))
|
|
602
|
+
|
|
603
|
+
return transactions
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
async #getNonceFallback(address) {
|
|
540
607
|
let transactions = await transactionPoolStore.get()
|
|
541
|
-
transactions =
|
|
608
|
+
transactions = await this.promiseTransactions(Object.values(transactions))
|
|
542
609
|
transactions = transactions.filter(tx => tx.decoded.from === address)
|
|
543
|
-
transactions =
|
|
610
|
+
transactions = await this.promiseTransactionsContent(transactions)
|
|
611
|
+
|
|
544
612
|
if (this.lastBlock && transactions.length === 0) {
|
|
545
613
|
let block = await peernet.get(this.lastBlock.hash)
|
|
546
|
-
block = new BlockMessage(block)
|
|
614
|
+
block = await new BlockMessage(block)
|
|
547
615
|
|
|
548
616
|
// for (let tx of block.decoded?.transactions) {
|
|
549
617
|
// tx = await peernet.get(tx, 'transaction')
|
|
@@ -552,7 +620,7 @@ export default class Chain {
|
|
|
552
620
|
transactions = transactions.filter(tx => tx.from === address)
|
|
553
621
|
while (transactions.length === 0 && block.decoded.index !== 0) {
|
|
554
622
|
block = await blockStore.get(block.decoded.previousHash)
|
|
555
|
-
block = new BlockMessage(block)
|
|
623
|
+
block = await new BlockMessage(block)
|
|
556
624
|
transactions = block.decoded.transactions.filter(tx => tx.from === address)
|
|
557
625
|
}
|
|
558
626
|
|
|
@@ -563,6 +631,16 @@ export default class Chain {
|
|
|
563
631
|
return transactions[transactions.length - 1].nonce
|
|
564
632
|
}
|
|
565
633
|
|
|
634
|
+
async getNonce(address) {
|
|
635
|
+
if (!await accountsStore.has(address)) {
|
|
636
|
+
const nonce = await this.#getNonceFallback(address)
|
|
637
|
+
await accountsStore.put(address, new TextEncoder().encode(String(nonce)))
|
|
638
|
+
}
|
|
639
|
+
let nonce = await accountsStore.get(address)
|
|
640
|
+
nonce = new TextDecoder().decode(nonce)
|
|
641
|
+
return Number(nonce)
|
|
642
|
+
}
|
|
643
|
+
|
|
566
644
|
/**
|
|
567
645
|
* whenever method = createContract params should hold the contract hash
|
|
568
646
|
*
|
|
@@ -574,9 +652,74 @@ export default class Chain {
|
|
|
574
652
|
* @param {Array} params - array of paramters to apply to the contract method
|
|
575
653
|
* @param {Number} nonce - total transaction count [optional]
|
|
576
654
|
*/
|
|
577
|
-
createTransaction(to, method, params, nonce) {
|
|
655
|
+
async createTransaction(to, method, params, nonce, signature) {
|
|
578
656
|
return this.createTransactionFrom(peernet.id, to, method, params, nonce)
|
|
579
657
|
}
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
/**
|
|
662
|
+
*
|
|
663
|
+
* @param {Object} transaction {}
|
|
664
|
+
* @param {String} transaction.from address
|
|
665
|
+
* @param {String} transaction.to address
|
|
666
|
+
* @param {Object} transaction.params {}
|
|
667
|
+
* @param {String} transaction.params.method get, call
|
|
668
|
+
* @param {Buffer} transaction.params.data
|
|
669
|
+
* @returns
|
|
670
|
+
*/
|
|
671
|
+
async createTransactionHash(transaction) {
|
|
672
|
+
// todo: validate
|
|
673
|
+
const peernetHash = await new CodecHash(transaction, {name: 'transaction-message'})
|
|
674
|
+
return peernetHash.digest
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* @params {object} transaction -
|
|
679
|
+
* @params {object} wallet - any wallet/signer that supports sign(RAWtransaction)
|
|
680
|
+
*/
|
|
681
|
+
async #signTransaction (transaction, wallet) {
|
|
682
|
+
return wallet.sign(await this.createTransactionHash(transaction))
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
async signTransaction(transaction, signer) {
|
|
686
|
+
let identity = await walletStore.get('identity')
|
|
687
|
+
identity = JSON.parse(new TextDecoder().decode(identity))
|
|
688
|
+
const wallet = new MultiWallet(peernet.network)
|
|
689
|
+
wallet.recover(identity.mnemonic)
|
|
690
|
+
const account = wallet.account(0).external(0)
|
|
691
|
+
transaction.signature = await this.#signTransaction(transaction, wallet)
|
|
692
|
+
transaction.signature = bs32.encode(transaction.signature)
|
|
693
|
+
return transaction
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
/**
|
|
697
|
+
*
|
|
698
|
+
* @param {Object} transaction
|
|
699
|
+
* @param {Address} transaction.from
|
|
700
|
+
* @param {Address} transaction.to
|
|
701
|
+
* @param {String} transaction.method
|
|
702
|
+
* @param {Array} transaction.params
|
|
703
|
+
* @param {Number} transaction.nonce
|
|
704
|
+
*
|
|
705
|
+
* @returns {Object} transaction
|
|
706
|
+
*/
|
|
707
|
+
async createRawTransaction(transaction) {
|
|
708
|
+
if (!transaction.from) transaction.from = peernet.id
|
|
709
|
+
transaction.timestamp = Date.now()
|
|
710
|
+
|
|
711
|
+
if (transaction.nonce === undefined) {
|
|
712
|
+
transaction.nonce = await this.getNonce(transaction.from)
|
|
713
|
+
transaction.nonce += 1
|
|
714
|
+
await accountsStore.put(transaction.from, new TextEncoder().encode(String(transaction.nonce)))
|
|
715
|
+
} else {
|
|
716
|
+
let nonce = await accountsStore.get(transaction.from)
|
|
717
|
+
nonce = new TextDecoder().decode(nonce)
|
|
718
|
+
if (transaction.nonce < nonce) throw Error(`a transaction with a higher nonce already exists`)
|
|
719
|
+
if (transaction.nonce === nonce) throw Error(`a transaction with the same nonce already exists`)
|
|
720
|
+
}
|
|
721
|
+
return transaction
|
|
722
|
+
}
|
|
580
723
|
/**
|
|
581
724
|
* every tx done is trough contracts so no need for amount
|
|
582
725
|
* data is undefined when nothing is returned
|
|
@@ -589,31 +732,41 @@ export default class Chain {
|
|
|
589
732
|
* @param {Number} nonce - total transaction count [optional]
|
|
590
733
|
*/
|
|
591
734
|
async createTransactionFrom(from, to, method, params, nonce) {
|
|
592
|
-
if (nonce === undefined) {
|
|
593
|
-
nonce = await this.getNonce(from)
|
|
594
|
-
nonce += 1
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
let data
|
|
598
|
-
let message = new TransactionMessage({timestamp: new Date().getTime(), from, to, nonce, method, params})
|
|
599
735
|
try {
|
|
736
|
+
|
|
737
|
+
const rawTransaction = await this.createRawTransaction({from, to, nonce, method, params})
|
|
738
|
+
const transaction = await this.signTransaction(rawTransaction, from)
|
|
739
|
+
const message = await new TransactionMessage(transaction)
|
|
740
|
+
|
|
741
|
+
let data
|
|
600
742
|
// await transactionPoolStore.put(message.hash, new TextEncoder().encode(JSON.stringify({signature, message: message.encoded})))
|
|
601
|
-
|
|
743
|
+
const wait = () => new Promise(async (resolve, reject) => {
|
|
744
|
+
if (pubsub.subscribers[`transaction.completed.${await message.hash}`]) {
|
|
745
|
+
const result = pubsub.subscribers[`transaction.completed.${await message.hash}`].value
|
|
746
|
+
result.status === 'fulfilled' ? resolve(await result.hash) : reject({hash: await result.hash, error: result.error})
|
|
747
|
+
} else {
|
|
748
|
+
const completed = async result => {
|
|
749
|
+
result.status === 'fulfilled' ? resolve(await result.hash) : reject({hash: await result.hash, error: result.error})
|
|
750
|
+
|
|
751
|
+
setTimeout(async () => {
|
|
752
|
+
pubsub.unsubscribe(`transaction.completed.${await message.hash}`, completed)
|
|
753
|
+
}, 10000)
|
|
754
|
+
}
|
|
755
|
+
pubsub.subscribe(`transaction.completed.${await message.hash}`, completed)
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
})
|
|
760
|
+
|
|
761
|
+
await transactionPoolStore.put(await message.hash, message.encoded)
|
|
602
762
|
peernet.publish('add-transaction', message.encoded)
|
|
763
|
+
this.#addTransaction(message.encoded)
|
|
764
|
+
return {hash: await message.hash, data, fee: await calculateFee(message.decoded), wait}
|
|
603
765
|
} catch (e) {
|
|
766
|
+
console.log(e);
|
|
604
767
|
throw e
|
|
605
768
|
}
|
|
606
|
-
|
|
607
|
-
const completed = result => {
|
|
608
|
-
result.status === 'fulfilled' ? resolve(result.hash) : reject({hash: result.hash, error: result.error})
|
|
609
|
-
|
|
610
|
-
pubsub.unsubscribe(`transaction.completed.${message.hash}`, completed)
|
|
611
|
-
}
|
|
612
|
-
pubsub.subscribe(`transaction.completed.${message.hash}`, completed)
|
|
613
|
-
})
|
|
614
|
-
|
|
615
|
-
if (await this.hasTransactionToHandle() && !this.#runningEpoch) this.#runEpoch()
|
|
616
|
-
return {hash: message.hash, data, fee: lib.calculateFee(message), wait}
|
|
769
|
+
|
|
617
770
|
}
|
|
618
771
|
|
|
619
772
|
async createContractMessage(creator, contract, constructorParameters = []) {
|
|
@@ -625,8 +778,8 @@ export default class Chain {
|
|
|
625
778
|
}
|
|
626
779
|
|
|
627
780
|
async createContractAddress(creator, contract, constructorParameters = []) {
|
|
628
|
-
|
|
629
|
-
|
|
781
|
+
contract = await this.createContractMessage(creator, contract, constructorParameters)
|
|
782
|
+
return contract.hash
|
|
630
783
|
}
|
|
631
784
|
|
|
632
785
|
/**
|
|
@@ -639,7 +792,7 @@ export default class Chain {
|
|
|
639
792
|
const hash = await this.createContractAddress(creator, contract, params)
|
|
640
793
|
|
|
641
794
|
try {
|
|
642
|
-
const tx = await this.createTransactionFrom(peernet.id,
|
|
795
|
+
const tx = await this.createTransactionFrom(peernet.id, addresses.contractFactory, 'deployContract', [hash, creator, contract, constructorParameters])
|
|
643
796
|
} catch (e) {
|
|
644
797
|
throw e
|
|
645
798
|
}
|
|
@@ -686,15 +839,15 @@ export default class Chain {
|
|
|
686
839
|
}
|
|
687
840
|
|
|
688
841
|
mint(to, amount) {
|
|
689
|
-
return this.call(
|
|
842
|
+
return this.call(addresses.nativeToken, 'mint', [to, amount])
|
|
690
843
|
}
|
|
691
844
|
|
|
692
845
|
transfer(from, to, amount) {
|
|
693
|
-
return this.call(
|
|
846
|
+
return this.call(addresses.nativeToken, 'transfer', [from, to, amount])
|
|
694
847
|
}
|
|
695
848
|
|
|
696
849
|
get balances() {
|
|
697
|
-
return this.staticCall(
|
|
850
|
+
return this.staticCall(addresses.nativeToken, 'balances')
|
|
698
851
|
}
|
|
699
852
|
|
|
700
853
|
deleteAll() {
|
|
@@ -711,7 +864,7 @@ export default class Chain {
|
|
|
711
864
|
* @example chain.lookup('myCoolContractName') // qmqsfddfdgfg...
|
|
712
865
|
*/
|
|
713
866
|
lookup(name) {
|
|
714
|
-
return this.call(
|
|
867
|
+
return this.call(addresses.nameService, 'lookup', [name])
|
|
715
868
|
}
|
|
716
869
|
}
|
|
717
870
|
</code></pre>
|
|
@@ -726,7 +879,7 @@ export default class Chain {
|
|
|
726
879
|
<br class="clear">
|
|
727
880
|
|
|
728
881
|
<footer>
|
|
729
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.
|
|
882
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.11</a>
|
|
730
883
|
</footer>
|
|
731
884
|
|
|
732
885
|
<script src="scripts/linenumber.js"></script>
|
|
@@ -80,11 +80,11 @@
|
|
|
80
80
|
Resources
|
|
81
81
|
</h3>
|
|
82
82
|
|
|
83
|
-
<a href="https://github.com/arteontoken/monorepo/chain">github</a>
|
|
83
|
+
<a href="https://github.com/arteontoken/monorepo/tree/main/chain">github</a>
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
<h3 id="global-nav">Global</h3><ul><li><a href="global.html#addContract">addContract</a></li><li><a href="global.html#createTransaction">createTransaction</a></li><li><a href="global.html#createTransactionFrom">createTransactionFrom</a></li><li><a href="global.html#deployContract">deployContract</a></li><li><a href="global.html#lookup">lookup</a></li><li><a href="global.html#state">state</a></li></ul>
|
|
87
|
+
<h3 id="global-nav">Global</h3><ul><li><a href="global.html#addContract">addContract</a></li><li><a href="global.html#createRawTransaction">createRawTransaction</a></li><li><a href="global.html#createTransaction">createTransaction</a></li><li><a href="global.html#createTransactionFrom">createTransactionFrom</a></li><li><a href="global.html#createTransactionHash">createTransactionHash</a></li><li><a href="global.html#deployContract">deployContract</a></li><li><a href="global.html#lookup">lookup</a></li><li><a href="global.html#state">state</a></li></ul>
|
|
88
88
|
</nav>
|
|
89
89
|
|
|
90
90
|
<div id="main">
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
<br class="clear">
|
|
171
171
|
|
|
172
172
|
<footer>
|
|
173
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.
|
|
173
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.11</a>
|
|
174
174
|
</footer>
|
|
175
175
|
|
|
176
176
|
<script src="scripts/linenumber.js"></script>
|