1.0.0 • Published 7 months ago

@sudophunk/fulido v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

FuLido

Before deploying check out the .env.example and .env.test.example files. You should create your own .env (if you plan to deploy to mainnet) and .env.test (if you plan to deploy to testnet) files.

DEPLOYER_PRIVATE_KEY=<PRIVATE KEY OF THE DEPLOYER WALLET>
ETHERSCAN_API_KEY=<ETHERSCAN API KEY>
CHILD_CHAIN_RPC=<RPC OF THE CHILD CHAIN>
ROOT_CHAIN_RPC=<RPC OF THE ROOTH CHAIN>
ROOT_GAS_PRICE=<GAS PRICE ON THE ROOT CHAIN>
ROOT_GAS_LIMIT=<GAS LIMIT ON THE ROOT CHAIN>
CHILD_GAS_PRICE=<GAS PRICE ON THE CHILD CHAIN>
CHILD_GAS_LIMIT=<GAS LIMIT ON THE CHILD CHAIN>
CHECKPOINT_MANAGER=<CHECKPOINT MANAGER ADDRESS>
STAKE_MANAGER=<STAKE MANAGER ADDRESS>
FURY_TOKEN=<ADDRESS OF THE FURY ERC20 TOKEN>
FX_ROOT=<ADDRESS OF THE FX ROOT CONTRACT>
FX_CHILD=<ADDRESS OF THE FX CHILD CONTRACT>
DAO=<ADDRESS THAT WILL BE USED AS A DAO ON STFURY>
INSURANCE=<ADDRESS THAT WILL BE USED AS AN INSURANCE ON STFURY>
TREASURY=<ADDRESS THAT WILL BE USED AS A TREASURY ON STFURY>
STFURY_SUBMIT_THRESHOLD=<SUBMIT THRESHOLD>

Deploying

To deploy on testnet run:

npm run deploy:test

To deploy on mainnet run:

npm run deploy:main

Verify contracts with: make verify-goerli

Testing

To execute tests run:

npx hardhat test

Current deployed contract addresses

Guide on executing tasks

To add a new operator run: npx hardhat addOperator --network <network> --operator-name <operatorName> --reward-address <rewardAddress> --pub-key <pubKey> --private-key <privateKey> OPTIONAL PARAMS: pub-key, private-key. If you don't provide pub-key, it will be generated from VALIDATOR_PRIVATE_KEY from .env. If you don't provide private key, tx will be signed with a wallet whose private key responds to GOERLI_PRIVATE_KEY from .env. For now, the only supported is goerli.

To stake an operator run: npx hardhat stakeOperator --network <network> --amount <amount> --heimdall-fee <heimdallFee> --private-key <privateKey> OPTIONAL PARAMS: private-key. If you don't provide private key, tx will be signed with a wallet whose private key responds to GOERLI_PRIVATE_KEY from .env. For now, the only supported is goerli.

abstract-levelabstract-leveldownacceptsacornacorn-walkacorn-jsxaes-jsadm-zipaggregate-erroragent-baseajvamazon-cognito-identity-jsansi-escapesansi-colorsansi-regexansi-stylesarr-diffantlr4tsarganymatchargparsearr-flattenarray-buffer-byte-lengtharray-backarray-includesarray-unionarray-flattenarray-uniquearray.prototype.findlastarray.prototype.findlastindexarray.prototype.flatmaparr-unionarray.prototype.reducearraybuffer.prototype.sliceasaparray-uniqasn1.jsassert-plusasn1assign-symbolsassertion-errorastral-regexasync-eventemitterasync-limiterasync-retryat-least-nodearray.prototype.flataws-sign2asynckitatobasyncbabel-code-framebabel-generatorbabel-helper-builder-binary-assignment-operator-visitorbabel-helper-define-mapbabel-helper-call-delegateaxiosbabel-helper-explode-assignable-expressionbabel-helper-function-namebabel-helper-get-function-aritybabel-helper-optimise-call-expressionbabel-helper-regexbabel-helper-remap-async-to-generatorbabel-helper-replace-supersbabel-helper-hoist-variablesavailable-typed-arraysbabel-messagesbabel-plugin-check-es2015-constantsbabel-corebabel-plugin-syntax-async-functionsbabel-plugin-syntax-exponentiation-operatorbabel-plugin-syntax-trailing-function-commasbabel-plugin-transform-es2015-block-scoped-functionsbabel-helpersbabel-plugin-transform-async-to-generatorbabel-plugin-transform-es2015-block-scopingbabel-plugin-transform-es2015-duplicate-keysbabel-plugin-transform-es2015-classesbabel-plugin-transform-es2015-for-ofbabel-plugin-transform-es2015-literalsbabel-plugin-transform-es2015-function-namebabel-plugin-transform-es2015-destructuringbabel-plugin-transform-es2015-computed-propertiesbabel-plugin-transform-es2015-arrow-functionsbabel-plugin-transform-es2015-modules-amdbabel-plugin-transform-es2015-modules-systemjsbabel-plugin-transform-es2015-object-superbabel-plugin-transform-es2015-parametersbabel-plugin-transform-es2015-modules-commonjsbabel-plugin-transform-es2015-shorthand-propertiesbabel-plugin-transform-es2015-template-literalsbabel-plugin-transform-es2015-modules-umdbabel-plugin-transform-es2015-spreadbabel-plugin-transform-es2015-sticky-regexbabel-plugin-transform-exponentiation-operatorbabel-plugin-transform-es2015-typeof-symbolbabel-plugin-transform-regeneratorbabel-plugin-transform-es2015-unicode-regexbabel-plugin-transform-strict-modebabel-preset-envbabel-templateaws4babel-traversebabel-typesbabel-runtimebackoffbabelifybalanced-matchbasebase-xbech32bcrypt-pbkdfbigint-crypto-utilsbabylonbignumber.jsbinary-extensionsblakejsbluebirdbn.jsbody-parserbase64-jsbip39brorandbrace-expansionbrowserify-aesbrowser-levelbrowserify-desbracesbrowser-stdoutbrowserify-rsabufferbrowserify-signbabel-registerbrowserslistbrowserify-cipherbuffer-frombs58bs58checkbuffer-to-arraybufferbusboybufferutilbytesbytewisecacheable-requestbytewise-corecache-basecacheable-lookupcaniuse-litecallsitescamelcasecall-bindcachedowncaselesscateringcborchalkcheck-errorcasecheckpoint-storebuffer-xorchownrcidsci-infoclass-ischokidarcipher-baseclass-utilsclean-stackcharencclonecli-table3code-point-atclone-responsecliuicolorscombined-streamclassic-levelcollection-visitcommand-line-argscommand-existscommandercompare-versionscolor-convertcomponent-emitterconcat-streamcontent-dispositionconcat-mapcontent-hashcontent-typecookiecookie-signatureconvert-source-mapcookiejarcolor-namecore-js-purecore-jscrc-32corscreate-hashcreate-ecdhcreate-requirecreate-hmaccore-util-iscross-spawncryptcrypto-browserifydashdashddebugcopy-descriptordecode-uri-componentdecamelizedeep-eqldeep-equaldefer-to-connectdeep-isdefine-propertydecompress-responsedefine-data-propertydeferred-leveldowndelayed-streamdefineddepddes.jsdiffdefine-propertiesdetect-indentdir-globdoctrinecross-fetchdiffie-hellmandestroydotignoreecc-jsbnee-firstduplexer3electron-to-chromiumemoji-regexencoding-downellipticencodingenquirerenv-pathserrnoes-abstractes-array-method-boxes-properlyend-of-streames-shim-unscopableserror-exes-to-primitivees5-extes-set-tostringtages6-iteratorescaladees6-symbolescape-string-regexpencodeurleslint-import-resolver-nodeeslint-module-utilsescape-htmleslint-plugin-eseslint-scopedom-walkespreeesrecurseetagesqueryeslint-utilseth-json-rpc-middlewareeth-block-trackerestraverseeth-json-rpc-infuraeslint-visitor-keyseth-libesutilseth-queryeth-tx-summaryethereumjs-abieth-gas-reportereth-sig-utilethereum-commonethashjsethereum-cryptographyethereum-bloom-filtersethereumjs-accountesprimaethereumjs-commonethereumjs-txethereumjs-blockethereumjs-utilethereumjs-blockchaineth-ens-namehashethereumjs-walletethereumjs-vmethjs-utileventemitter3ethjs-unitevp_bytestokeyexpresseventsexpand-bracketsextextglobextend-shallowextendextsprintffast-deep-equalfast-base64-decodefake-merkle-patricia-treefast-json-stable-stringifyfast-levenshteinfastqfetch-ponyfillfind-replacefast-globfile-entry-cachefind-upfinalhandlerflattedfind-yarn-workspace-rootfill-rangeflatflow-stoplightfor-inflat-cacheforever-agentfollow-redirectsfreshfragment-cacheform-datafor-eachfp-tsfs.realpathforwardedfs-minipassfunction-bindfs-readdir-recursivefunction.prototype.nameganache-coreget-caller-filefunctional-red-black-treeget-func-nameget-intrinsicget-portget-streamfunctions-have-namesgetpassget-symbol-descriptionglobget-valueglobalglob-parentglobalsfseventsglobalthisfs-extragraceful-fsglobbyhar-schemagrowlhashas-ansihas-bigintshas-valuehas-flaghas-protogopdhas-tostringtaghas-valueshas-property-descriptorshehash-basehash.jshas-symbolshar-validatorhome-or-tmphmac-drbghosted-git-infoheaphttp-basicgothttp-errorshttp-cache-semanticshttp-signaturehttps-proxy-agenticonv-litehttp2-wrapperhttp-httpsidna-uts46-hxignoreieee754immediateimmutableimurmurhashindent-stringinheritsinternal-slotinflightio-tsimport-freshinvert-kvhttp-response-objectis-argumentsinvariantis-accessor-descriptoris-arrayishis-boolean-objectis-bigintipaddr.jsis-bufferis-callableis-binary-pathis-array-bufferis-ciis-data-descriptoris-date-objectis-descriptoris-extglobis-dockeris-extendableis-core-moduleis-fnis-globis-finiteis-negative-zerois-functionis-number-objectis-hex-prefixedis-plain-objis-numberis-streamis-symbolis-fullwidth-code-pointis-typedarrayis-shared-array-bufferis-regexis-stringis-unicode-supportedis-windowsis-typed-arrayis-urlis-wslisarrayisexeisobjectisstreamisomorphic-unfetchis-weakrefjs-cookiejs-sha3js-tokensjs-yamljs-sdsljsbnis-utf8json-rpc-enginejson-rpc-random-idjson-rpc-errorjson-schemajson-stable-stringifyjson-schema-traversejson-stable-stringify-without-jsonifyjson5is-plain-objectjson-stringify-safejson-bufferjsprimjsonfilekeccakkeyvkind-ofklawlcidklaw-synclevel-codeclevellevel-errorslevel-memlevel-packagerlevel-postlevel-sublevellevel-iterator-streamlevel-supportslevel-transcoderlevel-wsleveluplocate-pathload-json-filelevnlodashlodash.assignlodash.mergelodash.truncateloupelooperjsesclog-symbolsloose-envifylru-cachelru_mapltgtlowercase-keysmap-cachejsonifymap-visitmarkdown-tablemcl-wasmmemdownmake-errormemorystreammerge-descriptorsmerge2micro-ftchmerkle-patricia-treemedia-typermemory-levelmd5.jsmimemiller-rabinmime-typesmicromatchmin-documentmime-dbmimic-responseminimalistic-assertminizlibmethodsminimatchmixin-deepmkdirpminipassmkdirp-promisemock-fsmnemonistmodule-errormock-propertymultihashesminimistminimalistic-crypto-utilsmultibasenanoidnano-json-stream-parsermulticodecnanomatchnatural-comparenapi-macrosnext-ticknode-addon-apinode-environment-flagsnegotiatornice-trynode-fetchnode-gyp-buildmsnumber-to-bnnofilternormalize-pathnormalize-urlnumber-is-nanoauth-signobject-copyobject-assignobject-keysobject-visitobject-inspectobject.assignobject.fromentriesobject.getownpropertydescriptorsobject.pickobject.valuesobliteratoroboeon-finishedonceobject.groupbyopenoptionatoros-tmpdirobject-isp-locateos-localep-limitp-cancelablep-tryp-mapparent-moduleparse-asn1parse-headersparse-cache-controlos-homedirparseurlnormalize-package-datapascalcasepath-browserifyparse-jsonpatch-packagepath-existspathvalpath-parsepath-is-absolutepath-keypbkdf2path-to-regexppinkie-promisepostinstall-postinstallposix-character-classesperformance-nowpicomatchprelude-lspath-typepinkieprecondprettierprivateprepend-httpprocesspifyprogresspromisepromise-to-callbackproxy-from-envproxy-addrpseudomapproper-lockfileprrpslpull-livepull-catpull-streampull-deferpublic-encryptpull-levelpull-windowpull-pushableqsqueue-microtaskquick-lrupunycodequery-stringraw-bodyrandombytespumprandomfillread-pkgreadable-streamregenerateprocess-nextick-argsregenerator-transformread-pkg-upregex-notreaddirpregexpu-coreregenerator-runtimeregexp.prototype.flagsrepeat-stringregexppregjsgenrange-parserrepeatingregjsparserreq-cwdrepeat-elementreq-fromrequest-promise-nativerequestrequire-directoryresolverequest-promise-corerequire-from-stringresolve-alpnresponselikeresolve-urlreusifyretryretresolve-fromrimrafripemd160rlprun-parallel-limitsafe-buffersafe-event-emittersafe-regex-testrun-parallelsafe-array-concatsafe-regexsecp256k1rustbn.jsscrypt-jssafer-bufferseedrandomsemversemaphoreserve-staticsendset-function-nameset-blockingservifyserialize-javascriptsetprototypeofset-valueset-immediate-shimsha1scryptsysetimmediatesha.jsshebang-commandshebang-regexsimple-getside-channelslashslice-ansisignal-exitsimple-concatsnapdragonsolidity-astsnapdragon-nodesnapdragon-utilspdx-correctsource-maprequire-main-filenamesource-map-supportspdx-exceptionssource-map-resolvespdx-expression-parsesprintf-jssource-map-urlsplit-stringstacktrace-parserstatusessshpkstealthy-requirestrict-uri-encodestream-to-pull-streamstring.prototype.trimendstring.prototype.trimstreamsearchstatic-extendstring-widthstring_decoderstrip-json-commentsstrip-ansistrip-bomsupports-colorstrip-hex-prefixstring.prototype.trimstartsync-requestswarm-jssync-rpcsupports-preserve-symlinks-flagtabletest-valuetext-tablethen-requesttarthrough2timed-outtapetestrpcto-readable-streamto-fast-propertiesto-object-pathspdx-license-idsto-regex-rangetmpto-regextough-cookiets-essentialstr46toidentifiertrim-rightts-generatortsutilstslibtype-checktsconfig-pathstype-detecttype-festtyped-array-buffertyped-array-byte-lengthtsorttypedarray-to-buffertype-istypewisetypedarraytypewiselitetypewise-coretunnel-agenttypicalultrontyped-array-byte-offsettweetnaclunbox-primitiveunderscoretyped-array-lengthtweetnacl-utilunfetchunion-valueunormuniversalifytypeurixunset-valueundiciunpipeuri-jsurl-set-queryurl-parse-laxuseutf-8-validateutil.promisifyv8-compile-cacheutils-mergev8-compile-cache-libvarinturlvalidate-npm-package-licensevaryweb3-bzzweb3-core-helpersweb3utf8web3-core-promieventuuidverrorweb3-core-methodweb3-coreweb3-eth-accountsweb3-eth-abiweb3-ethweb3-core-subscriptionsweb3-eth-ensutil-deprecateweb3-eth-ibanweb3-eth-contractweb3-netweb3-core-requestmanagerweb3-eth-personalweb3-provider-engineweb3-providers-ipcweb3-shhweb3-utilswebsocketwhichwhatwg-urlwhich-typed-arraywhich-modulewhich-boxed-primitiveweb3-providers-wswhatwg-fetchwide-alignwindow-sizewrappywebidl-conversionswsxhrxhr-request-promisexhr-requestwrap-ansixmlhttprequestworkerpooly18nxtendyallistyaetiyargsyargs-parserxhr2-cookiesyargs-unparseryamlweb3-providers-httpyocto-queueyn
1.0.0

7 months ago