├── .gitignore
├── .idea
├── .gitignore
├── codeStyles
│ └── codeStyleConfig.xml
├── compiler.xml
├── encodings.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── jsLibraryMappings.xml
├── modules.xml
├── vcs.xml
└── wallet.iml
├── LICENSE
├── README.md
├── audits
├── CommonPrefixAudit.pdf
├── ShashankAgrawalAnalysis.pdf
└── SlowMistAudit.pdf
├── benchmark
├── .gitignore
├── ONEWalletBenchmarkDB
│ ├── .gitignore
│ └── README.md
├── README.md
├── hash.js
├── nodeWorker.js
├── package.json
└── yarn.lock
├── code
├── .babelrc
├── .env.sample
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .gitignore
├── .solhint.json
├── .yarnclean
├── README.md
├── alternatives
│ ├── ONEWallet2.sol
│ └── README.md
├── backend
│ ├── .babelrc
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── app.js
│ ├── bin
│ │ └── run.js
│ ├── certs
│ │ ├── README.md
│ │ └── gen.sh
│ ├── config.js
│ ├── deploy
│ │ ├── enable.sh
│ │ ├── log.sh
│ │ └── otp-wallet-backend.service
│ ├── logger.js
│ ├── package.json
│ ├── routes
│ │ ├── backup.js
│ │ ├── index.js
│ │ └── util.js
│ ├── src
│ │ └── data
│ │ │ ├── backup.js
│ │ │ ├── datastore.js
│ │ │ ├── generic.js
│ │ │ ├── storage.js
│ │ │ └── user.js
│ └── yarn.lock
├── build
│ ├── abi
│ │ ├── AbstractONEWallet.json
│ │ ├── Address.json
│ │ ├── CommitManager.json
│ │ ├── Context.json
│ │ ├── CoreManager.json
│ │ ├── DomainManager.json
│ │ ├── ENS.json
│ │ ├── ERC1155.json
│ │ ├── ERC165.json
│ │ ├── ERC20.json
│ │ ├── ERC721.json
│ │ ├── Enums.json
│ │ ├── Executor.json
│ │ ├── Forwardable.json
│ │ ├── IDefaultReverseResolver.json
│ │ ├── IERC1155.json
│ │ ├── IERC1155MetadataURI.json
│ │ ├── IERC1155Receiver.json
│ │ ├── IERC165.json
│ │ ├── IERC20.json
│ │ ├── IERC20Metadata.json
│ │ ├── IERC721.json
│ │ ├── IERC721Metadata.json
│ │ ├── IERC721Receiver.json
│ │ ├── IONEWallet.json
│ │ ├── IONEWalletFactoryHelper.json
│ │ ├── IRegistrar.json
│ │ ├── IReverseRegistrar.json
│ │ ├── ONEWallet.json
│ │ ├── ONEWalletCodeHelper.json
│ │ ├── ONEWalletFactory.json
│ │ ├── ONEWalletFactoryHelper.json
│ │ ├── ONEWalletV5.json
│ │ ├── ONEWalletV6.json
│ │ ├── Recovery.json
│ │ ├── Registrar.json
│ │ ├── Resolver.json
│ │ ├── Reveal.json
│ │ ├── ReverseRegistrar.json
│ │ ├── SignatureManager.json
│ │ ├── SpendingManager.json
│ │ ├── Staking.json
│ │ ├── StakingPrecompilesSelectors.json
│ │ ├── Strings.json
│ │ ├── TestERC1155.json
│ │ ├── TestERC20.json
│ │ ├── TestERC20Decimals9.json
│ │ ├── TestERC721.json
│ │ ├── TokenManager.json
│ │ ├── TokenTracker.json
│ │ ├── Version.json
│ │ └── WalletGraph.json
│ └── contracts-old
│ │ ├── ONEWalletV5.json
│ │ └── ONEWalletV6.json
├── cli
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .yarnclean
│ ├── babel.config.js
│ ├── package.json
│ ├── src
│ │ ├── ONEWalletWorker.js
│ │ ├── cmd.js
│ │ ├── config.js
│ │ ├── constants.js
│ │ ├── info.js
│ │ ├── init.js
│ │ ├── list.js
│ │ ├── main.js
│ │ ├── make.js
│ │ ├── message.js
│ │ ├── scan.js
│ │ ├── send.js
│ │ ├── setMain.js
│ │ ├── state.js
│ │ ├── store.js
│ │ └── util.js
│ └── yarn.lock
├── client
│ ├── .babel.config.js
│ ├── .env.sample
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .yarnclean
│ ├── assets
│ │ ├── 1wallet
│ │ │ ├── app.webmanifest
│ │ │ ├── icons
│ │ │ │ ├── apple-icon-180.png
│ │ │ │ ├── manifest-icon-192.maskable.png
│ │ │ │ └── manifest-icon-512.maskable.png
│ │ │ ├── logo.png
│ │ │ ├── splash.html
│ │ │ └── splash
│ │ │ │ ├── apple-splash-1125-2436.jpg
│ │ │ │ ├── apple-splash-1136-640.jpg
│ │ │ │ ├── apple-splash-1170-2532.jpg
│ │ │ │ ├── apple-splash-1179-2556.jpg
│ │ │ │ ├── apple-splash-1242-2208.jpg
│ │ │ │ ├── apple-splash-1242-2688.jpg
│ │ │ │ ├── apple-splash-1284-2778.jpg
│ │ │ │ ├── apple-splash-1290-2796.jpg
│ │ │ │ ├── apple-splash-1334-750.jpg
│ │ │ │ ├── apple-splash-1536-2048.jpg
│ │ │ │ ├── apple-splash-1620-2160.jpg
│ │ │ │ ├── apple-splash-1668-2224.jpg
│ │ │ │ ├── apple-splash-1668-2388.jpg
│ │ │ │ ├── apple-splash-1792-828.jpg
│ │ │ │ ├── apple-splash-2048-1536.jpg
│ │ │ │ ├── apple-splash-2048-2732.jpg
│ │ │ │ ├── apple-splash-2160-1620.jpg
│ │ │ │ ├── apple-splash-2208-1242.jpg
│ │ │ │ ├── apple-splash-2224-1668.jpg
│ │ │ │ ├── apple-splash-2388-1668.jpg
│ │ │ │ ├── apple-splash-2436-1125.jpg
│ │ │ │ ├── apple-splash-2532-1170.jpg
│ │ │ │ ├── apple-splash-2556-1179.jpg
│ │ │ │ ├── apple-splash-2688-1242.jpg
│ │ │ │ ├── apple-splash-2732-2048.jpg
│ │ │ │ ├── apple-splash-2778-1284.jpg
│ │ │ │ ├── apple-splash-2796-1290.jpg
│ │ │ │ ├── apple-splash-640-1136.jpg
│ │ │ │ ├── apple-splash-750-1334.jpg
│ │ │ │ └── apple-splash-828-1792.jpg
│ │ ├── flags
│ │ │ ├── ad.svg
│ │ │ ├── ae.svg
│ │ │ ├── af.svg
│ │ │ ├── ag.svg
│ │ │ ├── ai.svg
│ │ │ ├── al.svg
│ │ │ ├── am.svg
│ │ │ ├── an.svg
│ │ │ ├── ao.svg
│ │ │ ├── aq.svg
│ │ │ ├── ar.svg
│ │ │ ├── as.svg
│ │ │ ├── at.svg
│ │ │ ├── au.svg
│ │ │ ├── aw.svg
│ │ │ ├── ax.svg
│ │ │ ├── az.svg
│ │ │ ├── ba.svg
│ │ │ ├── bb.svg
│ │ │ ├── bd.svg
│ │ │ ├── be.svg
│ │ │ ├── bf.svg
│ │ │ ├── bg.svg
│ │ │ ├── bh.svg
│ │ │ ├── bi.svg
│ │ │ ├── bj.svg
│ │ │ ├── bl.svg
│ │ │ ├── bm.svg
│ │ │ ├── bn.svg
│ │ │ ├── bo.svg
│ │ │ ├── bq.svg
│ │ │ ├── br.svg
│ │ │ ├── bs.svg
│ │ │ ├── bt.svg
│ │ │ ├── bv.svg
│ │ │ ├── bw.svg
│ │ │ ├── by.svg
│ │ │ ├── bz.svg
│ │ │ ├── ca.svg
│ │ │ ├── cc.svg
│ │ │ ├── cd.svg
│ │ │ ├── cf.svg
│ │ │ ├── cg.svg
│ │ │ ├── ch.svg
│ │ │ ├── ci.svg
│ │ │ ├── ck.svg
│ │ │ ├── cl.svg
│ │ │ ├── cm.svg
│ │ │ ├── cn.svg
│ │ │ ├── co.svg
│ │ │ ├── cr.svg
│ │ │ ├── cu.svg
│ │ │ ├── cv.svg
│ │ │ ├── cw.svg
│ │ │ ├── cx.svg
│ │ │ ├── cy.svg
│ │ │ ├── cz.svg
│ │ │ ├── de.svg
│ │ │ ├── dj.svg
│ │ │ ├── dk.svg
│ │ │ ├── dm.svg
│ │ │ ├── do.svg
│ │ │ ├── dz.svg
│ │ │ ├── ec.svg
│ │ │ ├── ee.svg
│ │ │ ├── eg.svg
│ │ │ ├── eh.svg
│ │ │ ├── er.svg
│ │ │ ├── es.svg
│ │ │ ├── et.svg
│ │ │ ├── eu.svg
│ │ │ ├── fi.svg
│ │ │ ├── fj.svg
│ │ │ ├── fk.svg
│ │ │ ├── fm.svg
│ │ │ ├── fo.svg
│ │ │ ├── fr.svg
│ │ │ ├── ga.svg
│ │ │ ├── gb-eng.svg
│ │ │ ├── gb-nir.svg
│ │ │ ├── gb-sct.svg
│ │ │ ├── gb-wls.svg
│ │ │ ├── gb.svg
│ │ │ ├── gd.svg
│ │ │ ├── ge.svg
│ │ │ ├── gf.svg
│ │ │ ├── gg.svg
│ │ │ ├── gh.svg
│ │ │ ├── gi.svg
│ │ │ ├── gl.svg
│ │ │ ├── gm.svg
│ │ │ ├── gn.svg
│ │ │ ├── gp.svg
│ │ │ ├── gq.svg
│ │ │ ├── gr.svg
│ │ │ ├── gs.svg
│ │ │ ├── gt.svg
│ │ │ ├── gu.svg
│ │ │ ├── gw.svg
│ │ │ ├── gy.svg
│ │ │ ├── hk.svg
│ │ │ ├── hm.svg
│ │ │ ├── hn.svg
│ │ │ ├── hr.svg
│ │ │ ├── ht.svg
│ │ │ ├── hu.svg
│ │ │ ├── id.svg
│ │ │ ├── ie.svg
│ │ │ ├── il.svg
│ │ │ ├── im.svg
│ │ │ ├── in.svg
│ │ │ ├── io.svg
│ │ │ ├── iq.svg
│ │ │ ├── ir.svg
│ │ │ ├── is.svg
│ │ │ ├── it.svg
│ │ │ ├── je.svg
│ │ │ ├── jm.svg
│ │ │ ├── jo.svg
│ │ │ ├── jp.svg
│ │ │ ├── ke.svg
│ │ │ ├── kg.svg
│ │ │ ├── kh.svg
│ │ │ ├── ki.svg
│ │ │ ├── km.svg
│ │ │ ├── kn.svg
│ │ │ ├── kp.svg
│ │ │ ├── kr.svg
│ │ │ ├── kw.svg
│ │ │ ├── ky.svg
│ │ │ ├── kz.svg
│ │ │ ├── la.svg
│ │ │ ├── lb.svg
│ │ │ ├── lc.svg
│ │ │ ├── li.svg
│ │ │ ├── lk.svg
│ │ │ ├── lr.svg
│ │ │ ├── ls.svg
│ │ │ ├── lt.svg
│ │ │ ├── lu.svg
│ │ │ ├── lv.svg
│ │ │ ├── ly.svg
│ │ │ ├── ma.svg
│ │ │ ├── mc.svg
│ │ │ ├── md.svg
│ │ │ ├── me.svg
│ │ │ ├── mf.svg
│ │ │ ├── mg.svg
│ │ │ ├── mh.svg
│ │ │ ├── mk.svg
│ │ │ ├── ml.svg
│ │ │ ├── mm.svg
│ │ │ ├── mn.svg
│ │ │ ├── mo.svg
│ │ │ ├── mp.svg
│ │ │ ├── mq.svg
│ │ │ ├── mr.svg
│ │ │ ├── ms.svg
│ │ │ ├── mt.svg
│ │ │ ├── mu.svg
│ │ │ ├── mv.svg
│ │ │ ├── mw.svg
│ │ │ ├── mx.svg
│ │ │ ├── my.svg
│ │ │ ├── mz.svg
│ │ │ ├── na.svg
│ │ │ ├── nc.svg
│ │ │ ├── ne.svg
│ │ │ ├── nf.svg
│ │ │ ├── ng.svg
│ │ │ ├── ni.svg
│ │ │ ├── nl.svg
│ │ │ ├── no.svg
│ │ │ ├── np.svg
│ │ │ ├── nr.svg
│ │ │ ├── nu.svg
│ │ │ ├── nz.svg
│ │ │ ├── om.svg
│ │ │ ├── pa.svg
│ │ │ ├── pe.svg
│ │ │ ├── pf.svg
│ │ │ ├── pg.svg
│ │ │ ├── ph.svg
│ │ │ ├── pk.svg
│ │ │ ├── pl.svg
│ │ │ ├── pm.svg
│ │ │ ├── pn.svg
│ │ │ ├── pr.svg
│ │ │ ├── ps.svg
│ │ │ ├── pt.svg
│ │ │ ├── pw.svg
│ │ │ ├── py.svg
│ │ │ ├── qa.svg
│ │ │ ├── re.svg
│ │ │ ├── ro.svg
│ │ │ ├── rs.svg
│ │ │ ├── ru.svg
│ │ │ ├── rw.svg
│ │ │ ├── sa.svg
│ │ │ ├── sb.svg
│ │ │ ├── sc.svg
│ │ │ ├── sd.svg
│ │ │ ├── se.svg
│ │ │ ├── sg.svg
│ │ │ ├── sh.svg
│ │ │ ├── si.svg
│ │ │ ├── sj.svg
│ │ │ ├── sk.svg
│ │ │ ├── sl.svg
│ │ │ ├── sm.svg
│ │ │ ├── sn.svg
│ │ │ ├── so.svg
│ │ │ ├── sr.svg
│ │ │ ├── ss.svg
│ │ │ ├── st.svg
│ │ │ ├── sv.svg
│ │ │ ├── sx.svg
│ │ │ ├── sy.svg
│ │ │ ├── sz.svg
│ │ │ ├── tc.svg
│ │ │ ├── td.svg
│ │ │ ├── tf.svg
│ │ │ ├── tg.svg
│ │ │ ├── th.svg
│ │ │ ├── tj.svg
│ │ │ ├── tk.svg
│ │ │ ├── tl.svg
│ │ │ ├── tm.svg
│ │ │ ├── tn.svg
│ │ │ ├── to.svg
│ │ │ ├── tr.svg
│ │ │ ├── tt.svg
│ │ │ ├── tv.svg
│ │ │ ├── tw.svg
│ │ │ ├── tz.svg
│ │ │ ├── ua.svg
│ │ │ ├── ug.svg
│ │ │ ├── um.svg
│ │ │ ├── us.svg
│ │ │ ├── uy.svg
│ │ │ ├── uz.svg
│ │ │ ├── va.svg
│ │ │ ├── vc.svg
│ │ │ ├── ve.svg
│ │ │ ├── vg.svg
│ │ │ ├── vi.svg
│ │ │ ├── vn.svg
│ │ │ ├── vu.svg
│ │ │ ├── wf.svg
│ │ │ ├── ws.svg
│ │ │ ├── xk.svg
│ │ │ ├── ye.svg
│ │ │ ├── yt.svg
│ │ │ ├── za.svg
│ │ │ ├── zm.svg
│ │ │ └── zw.svg
│ │ ├── index.html
│ │ ├── metamask-add.png
│ │ ├── metamask-s1-add.jpg
│ │ ├── metamask-s1-switch.jpg
│ │ ├── metamask-switch.png
│ │ ├── modulo
│ │ │ ├── app.webmanifest
│ │ │ ├── icons
│ │ │ │ ├── apple-icon-180.png
│ │ │ │ ├── manifest-icon-192.maskable.png
│ │ │ │ └── manifest-icon-512.maskable.png
│ │ │ ├── logo.png
│ │ │ ├── splash.html
│ │ │ └── splash
│ │ │ │ ├── apple-splash-1125-2436.jpg
│ │ │ │ ├── apple-splash-1136-640.jpg
│ │ │ │ ├── apple-splash-1170-2532.jpg
│ │ │ │ ├── apple-splash-1179-2556.jpg
│ │ │ │ ├── apple-splash-1242-2208.jpg
│ │ │ │ ├── apple-splash-1242-2688.jpg
│ │ │ │ ├── apple-splash-1284-2778.jpg
│ │ │ │ ├── apple-splash-1290-2796.jpg
│ │ │ │ ├── apple-splash-1334-750.jpg
│ │ │ │ ├── apple-splash-1536-2048.jpg
│ │ │ │ ├── apple-splash-1620-2160.jpg
│ │ │ │ ├── apple-splash-1668-2224.jpg
│ │ │ │ ├── apple-splash-1668-2388.jpg
│ │ │ │ ├── apple-splash-1792-828.jpg
│ │ │ │ ├── apple-splash-2048-1536.jpg
│ │ │ │ ├── apple-splash-2048-2732.jpg
│ │ │ │ ├── apple-splash-2160-1620.jpg
│ │ │ │ ├── apple-splash-2208-1242.jpg
│ │ │ │ ├── apple-splash-2224-1668.jpg
│ │ │ │ ├── apple-splash-2388-1668.jpg
│ │ │ │ ├── apple-splash-2436-1125.jpg
│ │ │ │ ├── apple-splash-2532-1170.jpg
│ │ │ │ ├── apple-splash-2556-1179.jpg
│ │ │ │ ├── apple-splash-2688-1242.jpg
│ │ │ │ ├── apple-splash-2732-2048.jpg
│ │ │ │ ├── apple-splash-2778-1284.jpg
│ │ │ │ ├── apple-splash-2796-1290.jpg
│ │ │ │ ├── apple-splash-640-1136.jpg
│ │ │ │ ├── apple-splash-750-1334.jpg
│ │ │ │ └── apple-splash-828-1792.jpg
│ │ └── wc.png
│ ├── dev-harmony.sh
│ ├── dev.sh
│ ├── package.json
│ ├── src
│ │ ├── abbr.js
│ │ ├── api
│ │ │ ├── explorer.js
│ │ │ ├── flow.js
│ │ │ └── index.js
│ │ ├── app.less
│ │ ├── assets
│ │ │ ├── aave.svg
│ │ │ ├── bnb.svg
│ │ │ ├── btc.svg
│ │ │ ├── busd.svg
│ │ │ ├── dai.svg
│ │ │ ├── eth.svg
│ │ │ ├── harmony-icon.svg
│ │ │ ├── harmony.svg
│ │ │ ├── icons
│ │ │ │ ├── assets.svg
│ │ │ │ ├── audit.svg
│ │ │ │ ├── nft.svg
│ │ │ │ ├── overview.svg
│ │ │ │ ├── restore.svg
│ │ │ │ ├── stake.svg
│ │ │ │ └── swap.svg
│ │ │ ├── modulo-logo-h.png
│ │ │ ├── modulo.png
│ │ │ ├── onemoon.png
│ │ │ ├── sushi.svg
│ │ │ ├── tether.svg
│ │ │ ├── usdc.svg
│ │ │ └── viperswap.png
│ │ ├── components
│ │ │ ├── AddressInput.jsx
│ │ │ ├── AnimatedSection.jsx
│ │ │ ├── Buttons.jsx
│ │ │ ├── BuyButton.jsx
│ │ │ ├── CommitRevealProgress.jsx
│ │ │ ├── Common.jsx
│ │ │ ├── ERC20Grid.jsx
│ │ │ ├── Grid.jsx
│ │ │ ├── Layout.jsx
│ │ │ ├── LocalExport.jsx
│ │ │ ├── LocalImport.jsx
│ │ │ ├── NFTGrid.jsx
│ │ │ ├── OtpBox.jsx
│ │ │ ├── OtpSetup.jsx
│ │ │ ├── OtpStack.jsx
│ │ │ ├── OtpSuperStack.jsx
│ │ │ ├── OtpTools.jsx
│ │ │ ├── QrCodeScanner.jsx
│ │ │ ├── ScanGASteps.jsx
│ │ │ ├── SiderMenu.jsx
│ │ │ ├── SiderMenu
│ │ │ │ ├── Common.jsx
│ │ │ │ ├── DeskstopSiderMenu.jsx
│ │ │ │ ├── DesktopSiderMenuV2.jsx
│ │ │ │ ├── MobileSiderMenu.jsx
│ │ │ │ └── MobileSiderMenuV2.jsx
│ │ │ ├── StatsInfo.jsx
│ │ │ ├── Text.jsx
│ │ │ ├── TokenAssets.jsx
│ │ │ ├── TrackNewNFT.jsx
│ │ │ ├── WalletAddress.jsx
│ │ │ ├── WalletCreateProgress.jsx
│ │ │ ├── WalletHeader.jsx
│ │ │ └── WalletTitle.jsx
│ │ ├── config.js
│ │ ├── constants
│ │ │ ├── errors.js
│ │ │ ├── paths.js
│ │ │ ├── ui.js
│ │ │ └── wallet.js
│ │ ├── handler.js
│ │ ├── index.js
│ │ ├── init.js
│ │ ├── integration
│ │ │ ├── Common.jsx
│ │ │ ├── Connect.jsx
│ │ │ ├── RequestCall.jsx
│ │ │ ├── RequestPayment.jsx
│ │ │ ├── RequestSignature.jsx
│ │ │ ├── WalletAuth.jsx
│ │ │ ├── WalletConnect.jsx
│ │ │ ├── WalletConnectActionModal.jsx
│ │ │ ├── Web3Provider.jsx
│ │ │ └── knownCalls.js
│ │ ├── message.js
│ │ ├── pages
│ │ │ ├── Backup.jsx
│ │ │ ├── Contacts.jsx
│ │ │ ├── Contacts
│ │ │ │ └── ContactDetail.jsx
│ │ │ ├── Create.jsx
│ │ │ ├── Create
│ │ │ │ └── SignupAccount.jsx
│ │ │ ├── List.jsx
│ │ │ ├── Restore.jsx
│ │ │ ├── Restore
│ │ │ │ ├── Common.jsx
│ │ │ │ ├── RestoreByCodes.jsx
│ │ │ │ ├── RestoreByScan.jsx
│ │ │ │ ├── SetupNewCode.jsx
│ │ │ │ └── SyncRecoveryFile.jsx
│ │ │ ├── Show.jsx
│ │ │ ├── Show
│ │ │ │ ├── About.jsx
│ │ │ │ ├── Balance.jsx
│ │ │ │ ├── BuyDaVinci.jsx
│ │ │ │ ├── Call.jsx
│ │ │ │ ├── CheckForwardState.jsx
│ │ │ │ ├── CheckRoots.jsx
│ │ │ │ ├── DoRecover.jsx
│ │ │ │ ├── EnsureExecutable.jsx
│ │ │ │ ├── Extend.jsx
│ │ │ │ ├── Gift.jsx
│ │ │ │ ├── Limit.jsx
│ │ │ │ ├── NFTDashboard.jsx
│ │ │ │ ├── PurchaseDomain.jsx
│ │ │ │ ├── QRCode.jsx
│ │ │ │ ├── Reclaim.jsx
│ │ │ │ ├── Recovery.jsx
│ │ │ │ ├── Scan.jsx
│ │ │ │ ├── Send.jsx
│ │ │ │ ├── SetRecovery.jsx
│ │ │ │ ├── Sign.jsx
│ │ │ │ ├── Stake
│ │ │ │ │ ├── CollectStakeReward.jsx
│ │ │ │ │ ├── Stake.jsx
│ │ │ │ │ ├── StakeCommon.jsx
│ │ │ │ │ └── Unstake.jsx
│ │ │ │ ├── Swap.jsx
│ │ │ │ ├── TransactionViewer.jsx
│ │ │ │ ├── TransferDomain.jsx
│ │ │ │ ├── Upgrade.jsx
│ │ │ │ ├── WalletConnectRedirect.jsx
│ │ │ │ ├── Warnings.jsx
│ │ │ │ ├── randomWorker.js
│ │ │ │ └── show-util.js
│ │ │ ├── Tools.jsx
│ │ │ ├── Tools
│ │ │ │ └── RescueNFT.jsx
│ │ │ └── Unwrap.jsx
│ │ ├── proto
│ │ │ ├── localExportMessage.js
│ │ │ ├── oauthMigration.js
│ │ │ ├── oauth_migration.proto
│ │ │ ├── wallet.js
│ │ │ └── wallet.proto
│ │ ├── routes.js
│ │ ├── serviceWorker.js
│ │ ├── state
│ │ │ ├── crosstab.js
│ │ │ ├── modules
│ │ │ │ ├── balance
│ │ │ │ │ ├── actions.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── reducers.js
│ │ │ │ │ └── sagas.js
│ │ │ │ ├── cache
│ │ │ │ │ ├── actions.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── reducers.js
│ │ │ │ │ └── sagas.js
│ │ │ │ ├── global
│ │ │ │ │ ├── actions.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── reducers.js
│ │ │ │ │ └── sagas.js
│ │ │ │ ├── index.js
│ │ │ │ └── wallet
│ │ │ │ │ ├── actions.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── reducers.js
│ │ │ │ │ └── sagas.js
│ │ │ ├── rootReducer.js
│ │ │ ├── rootSaga.js
│ │ │ └── store.js
│ │ ├── storage
│ │ │ ├── index.js
│ │ │ └── util.js
│ │ ├── styles
│ │ │ ├── ant.less
│ │ │ └── v2ant.less
│ │ ├── theme.js
│ │ ├── util.js
│ │ └── worker
│ │ │ └── ONEWalletWorker.js
│ ├── webpack.config.js
│ └── yarn.lock
├── compile.sh
├── config.js
├── contracts
│ ├── AbstractONEWallet.sol
│ ├── CommitManager.sol
│ ├── CoreManager.sol
│ ├── DomainManager.sol
│ ├── Enums.sol
│ ├── Executor.sol
│ ├── Factory.sol
│ ├── FactoryHelper.sol
│ ├── Forwardable.sol
│ ├── IONEWallet.sol
│ ├── ONEWallet.sol
│ ├── ProxyWallet.sol
│ ├── Recovery.sol
│ ├── Reveal.sol
│ ├── SignatureManager.sol
│ ├── SpendingManager.sol
│ ├── Staking.sol
│ ├── TokenManager.sol
│ ├── TokenTracker.sol
│ ├── Version.sol
│ ├── WalletGraph.sol
│ └── debug
│ │ ├── Registrar.sol
│ │ └── TestTokens.sol
├── data
│ └── sushiswap.json
├── env
│ ├── README.md
│ └── ganache-new.sh
├── export.sh
├── extensions
│ ├── contracts.js
│ ├── deprecated.js
│ └── loader.js
├── external
│ ├── IERC20Uniswap.json
│ ├── IUniswapV2Factory.json
│ ├── IUniswapV2Pair.json
│ └── IUniswapV2Router02.json
├── flattened
│ ├── .gitignore
│ └── README.md
├── lib
│ ├── api
│ │ ├── backend.js
│ │ ├── command.js
│ │ ├── flow.js
│ │ ├── index.js
│ │ ├── message.js
│ │ └── storage.js
│ ├── bech32.js
│ ├── config
│ │ ├── common.js
│ │ └── provider.js
│ ├── constants.js
│ ├── debug.js
│ ├── event-message.js
│ ├── events-map.json
│ ├── events-params.json
│ ├── names.js
│ ├── onewallet.js
│ ├── params.js
│ ├── parser.js
│ └── util.js
├── package.json
├── relayer
│ ├── .gitignore
│ ├── app.js
│ ├── bin
│ │ └── run.js
│ ├── blockchain.js
│ ├── certs
│ │ ├── README.md
│ │ └── gen.sh
│ ├── config.js
│ ├── deploy
│ │ ├── enable.sh
│ │ ├── log.sh
│ │ ├── otp-wallet-relayer.service
│ │ └── port.sh
│ ├── logger.js
│ ├── package.json
│ ├── persist
│ │ ├── index.js
│ │ └── schema
│ │ │ ├── commit-requests.json
│ │ │ ├── new-requests.json
│ │ │ ├── other-requests.json
│ │ │ └── reveal-requests.json
│ ├── routes
│ │ ├── index.js
│ │ ├── monitor.js
│ │ ├── rl.js
│ │ ├── util.js
│ │ └── v5.js
│ ├── rpc.js
│ ├── scripts
│ │ ├── dupcache.sh
│ │ ├── rmcache.sh
│ │ └── rmcache2.sh
│ ├── util.js
│ └── yarn.lock
├── scripts
│ ├── 1wallets.js
│ ├── abi.js
│ ├── eventhash.js
│ ├── events-map.txt
│ ├── events.txt
│ ├── printDeployAddresses.js
│ ├── stats-histogram.js
│ ├── stats.js
│ └── sushi.js
├── size.sh
├── test
│ ├── DEVELOPER.MD
│ ├── README.md
│ ├── app.js
│ ├── client.js
│ ├── core.js
│ ├── example.js
│ ├── factory.js
│ ├── original
│ │ ├── basic.js
│ │ ├── command.js
│ │ ├── innerCores.js
│ │ └── spendLimit.js
│ ├── otp.js
│ ├── security.js
│ ├── tokens.js
│ ├── upgrade.js
│ └── util.js
├── truffle-config.js
└── yarn.lock
├── legacy
├── .babelrc
├── .env.sample
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .yarnclean
├── README.md
├── config.js
├── contract
│ ├── core
│ │ └── wallet_data.sol
│ ├── features
│ │ ├── daily_limit.sol
│ │ ├── guardians.sol
│ │ └── recovery.sol
│ └── otp_wallet.sol
├── lib
│ ├── merkle.js
│ ├── totp.js
│ └── wallet.js
├── package.json
├── test
│ ├── commons.js
│ ├── dailylimit_test.js
│ ├── guardians_test.js
│ ├── otp_wallet_test.js
│ └── recover_test.js
├── truffle-config.js
├── webclient
│ ├── .babel.config.js
│ ├── assets
│ │ └── index.html
│ ├── package.json
│ ├── src
│ │ ├── BenchmarkHash.jsx
│ │ ├── Create.jsx
│ │ ├── MainScreen.jsx
│ │ ├── index.js
│ │ ├── showWallet.js
│ │ ├── theme.scss
│ │ ├── truffleClient.js
│ │ └── worker
│ │ │ ├── hashBenchmark.js
│ │ │ ├── oneWalletWorker.js
│ │ │ └── sha256benchmarkWorker.js
│ ├── webpack.config.js
│ └── yarn.lock
└── yarn.lock
├── opendev
├── README.md
├── brayooi
│ └── 04_09_2022-05_06_2022.pdf
├── cylim
│ └── 11_21_2021-1_1_2022.pdf
├── darrlau
│ ├── .gitkeep
│ └── darrlau-timesheet-1wallet.pdf
├── haolinj
│ ├── 1_8_2021-22_8_2021.pdf
│ └── 29_8_2021-20_09_2021.pdf
├── johnwhitton
│ ├── JW_10_23_2022-11_05_2022.pdf
│ ├── JW_11_06_2022-11_10_2022.pdf
│ ├── jw_01_01_2023-01_06_2023.pdf
│ ├── jw_01_07_2023-01_13_2023.pdf
│ ├── jw_01_14_2023-01_27_2023.pdf
│ ├── jw_01_28_2023-02_03_2023.pdf
│ ├── jw_02_04_2023_02_10_2023.pdf
│ ├── jw_02_11_2023_02_16_2023.pdf
│ ├── jw_02_17_2023_03_01_2023.pdf
│ ├── jw_03_02_2023_03_05_2023.pdf
│ ├── jw_03_06_2022-03_19_2022.pdf
│ ├── jw_03_06_2023_03_17_2023.pdf
│ ├── jw_03_18_2023_03_23_2023.pdf
│ ├── jw_03_20_2022-04_02_2022.pdf
│ ├── jw_03_24_2023_03_31_2023.pdf
│ ├── jw_04_01_2023_04_07_2023.pdf
│ ├── jw_04_03_2022-04_16_2022.pdf
│ ├── jw_04_08_2023_04_12_2023.pdf
│ ├── jw_04_17_2022-04_30_2022.pdf
│ ├── jw_05_01_2022-05_21_2022.pdf
│ ├── jw_05_08_2023_05_25_2023.pdf
│ ├── jw_05_22_2022-05_28_2022.pdf
│ ├── jw_05_26_2023_05_29_2023.pdf
│ ├── jw_06_05_2022-06_18_2022.pdf
│ ├── jw_06_19_2022-06_25_2022.pdf
│ ├── jw_06_26_2022-06_27_2022.pdf
│ ├── jw_06_26_2022-07_23_2022.pdf
│ ├── jw_07_24_2022-07_30_2022.pdf
│ ├── jw_07_31_2022-08_13_2022.pdf
│ ├── jw_08_14_2022-08_27_2022.pdf
│ ├── jw_08_28_2022-09-03_2022.pdf
│ ├── jw_09_04_2022-09-17_2022.pdf
│ ├── jw_09_18_2022-09_24_2022.pdf
│ ├── jw_11_11_2022-11_18_2022.pdf
│ ├── jw_11_19_2022-12_3_2022.pdf
│ ├── jw_12_04_2022-12_09_2022.pdf
│ ├── jw_12_10_2022-12_16_2022.pdf
│ └── jw_12_17_2022-12_30_2022.pdf
├── polymorpher
│ ├── 10_16_2021-11_26_2021.pdf
│ ├── 10_1_2022-11_4_2022.pdf
│ ├── 11_12_2022-11_18_2022.pdf
│ ├── 11_19_2022-11_25_2022.pdf
│ ├── 11_26_2022-12_2_2022.pdf
│ ├── 11_27_2021-3_4_2022.pdf
│ ├── 11_5_2022-11_11_2022.pdf
│ ├── 12_10_2022-12_16_2022.pdf
│ ├── 12_17_2022-12_24_2022.pdf
│ ├── 12_24_2022-12_30_2022.pdf
│ ├── 12_31_2022-1_28_2023.pdf
│ ├── 12_3_2022-12_9_2022.pdf
│ ├── 1_29_2023-2_24_2023.pdf
│ ├── 2_25_2023-3_31_2023.pdf
│ ├── 3_5_2022-4_29_2022.pdf
│ ├── 4_1_2023-4_28_2023.pdf
│ ├── 4_29_2023-5_12_2023.pdf
│ ├── 4_30_2022-7_22_2022.pdf
│ ├── 5_13_2023-5_26_2023.pdf
│ ├── 5_1_2021-5_28_2021.pdf
│ ├── 5_27_2023-6_9_2023.pdf
│ ├── 5_29_2021-6_18_2021.pdf
│ ├── 6_10_2023-6_30_2023.pdf
│ ├── 6_19_2021-7_16_2021.pdf
│ ├── 7_17_2021-8_13_2021.pdf
│ ├── 7_1_2023-8_4_2023.pdf
│ ├── 7_23_2022-9_2_2022.pdf
│ ├── 8_14_2021-9_10_2021.pdf
│ ├── 8_5_2023-9_1_2023.pdf
│ ├── 9_11_2021-10_15_2021.pdf
│ ├── 9_2_2023-9_29_2023.pdf
│ └── 9_3_2022-9_30_2022.pdf
└── taoalpha
│ ├── 12_12_2021-1_1_2022.pdf
│ ├── 18_04_2022-30_04_2022.pdf
│ ├── 1_1_2022-31_1_2022.pdf
│ ├── 1_2_2022-28_2_2022.pdf
│ ├── 1_4_2022-17_4_2022.pdf
│ ├── 2022-11-01_2022-12-01.md
│ ├── 2022-12-01_2022-12-10.md
│ ├── 2022-12-11_2022-12-18.md
│ ├── 2022-12-18_2022-12-25.md
│ └── 31_03_2022-01_03_2022.pdf
├── scripts
├── README.md
├── hdnode.js
├── patch.sh
├── reinstall.sh
└── setup.sh
├── smartotp
├── .babelrc
├── .envSample
├── .eslintrc
├── .gitignore
├── README.md
├── common.js
├── contracts
│ ├── Migrations.sol
│ ├── WalletHandle.sol
│ └── WalletHandleFactory.sol
├── lib
│ ├── BytesLib.sol
│ ├── auth_config.js
│ └── authenticator.js
├── migrations
│ ├── 1_initial_migration.js
│ └── 2_deploy_wallet_handle.js
├── package-lock.json
├── package.json
├── test
│ └── TestWalletHandle.js
├── truffle.js
└── yarn.lock
└── wiki
├── Client Security.md
├── Home.md
├── Milestones
└── m10.md
├── README.md
├── Security-Goals.md
├── Smart-Contract-References.md
├── images
├── auth-connect.png
├── auth-pay-any-wallet.png
├── auth-pay-bad-address.png
├── auth-pay-specific-address-next.png
├── auth-pay-specific-address.png
├── call-confirm.png
├── call.png
├── sign-confirm.png
└── sign.png
├── protocol.lyx
├── protocol.pdf
└── updates
├── v15.md
├── v16.2.md
├── v16.3.md
├── v16.3
├── contacts.jpg
├── customize-wallet-2.jpg
├── customize-wallet.jpg
├── iOS-app.jpg
├── iOS-app.png
├── iOS-install.jpg
├── ios-app-post-install.jpg
├── macOS-app.jpg
├── macOS-install.jpg
└── nft-rescue.jpg
└── v16.md
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea/workspace.xml
2 | /wiki/\#operations.lyx\#
3 | /wiki/\#protocol.lyx\#
4 | /local
5 | .vscode
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/jsLibraryMappings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/wallet.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/audits/CommonPrefixAudit.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/audits/CommonPrefixAudit.pdf
--------------------------------------------------------------------------------
/audits/ShashankAgrawalAnalysis.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/audits/ShashankAgrawalAnalysis.pdf
--------------------------------------------------------------------------------
/audits/SlowMistAudit.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/audits/SlowMistAudit.pdf
--------------------------------------------------------------------------------
/benchmark/ONEWalletBenchmarkDB/.gitignore:
--------------------------------------------------------------------------------
1 | *.bin
2 |
--------------------------------------------------------------------------------
/benchmark/ONEWalletBenchmarkDB/README.md:
--------------------------------------------------------------------------------
1 | This directory hosts temporary files generated for benchmarking purposes
2 |
--------------------------------------------------------------------------------
/benchmark/README.md:
--------------------------------------------------------------------------------
1 | For simulating hash procedures in production and benchmarking several options
2 |
--------------------------------------------------------------------------------
/benchmark/nodeWorker.js:
--------------------------------------------------------------------------------
1 | const { Worker, parentPort } = require('worker_threads')
2 | const fastSHA256 = require('fast-sha256')
3 | const util = require('util')
4 |
5 | parentPort.once('message', ({ id, beginIndex, endIndex, workerData, workerResult }) => {
6 | // console.log(id, 'received', endIndex - beginIndex)
7 | const decoder = new util.TextDecoder()
8 | const workerDataView = new Uint8Array(workerData)
9 | const workerResultView = new Uint8Array(workerResult)
10 | for (let i = 0; i < endIndex - beginIndex; i += 1) {
11 | const a = workerDataView.subarray(i * 32, i * 32 + 32)
12 | const r = fastSHA256(a)
13 | const r2 = fastSHA256(r)
14 | workerResultView.set(r2, i * 32)
15 | }
16 | // console.log(id, 'done')
17 | parentPort.postMessage({ id, workerData, workerResult }, [workerData, workerResult])
18 | })
19 |
--------------------------------------------------------------------------------
/benchmark/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "one-wallet-hash-benchmark",
3 | "version": "0.0.1",
4 | "private": true,
5 | "license": "Apache-2.0",
6 | "dependencies": {
7 | "ethers": "^5.3.0",
8 | "fast-sha256": "^1.3.0",
9 | "keccak": "^3.0.1",
10 | "ripemd160": "^2.0.2",
11 | "sha3": "^2.1.4",
12 | "web3-utils": "^1.3.6"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/code/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env"
5 | ]
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/code/.env.sample:
--------------------------------------------------------------------------------
1 | ETH_GANACHE_MNEMONIC='filter group there hunt fitness junior ghost park route jar entire clown allow rifle meadow'
2 | RELAYER_ADDRESSES='0xC8cD0C9Ca68b853F73917c36E9276770A8D8E4E0'
3 | MAINNET_RPC=https://api.s0.t.hmny.io/
4 | HARMONY_MAINNET_KEY=
5 | HARMONY_TESTNET_KEY=
6 | VERBOSE=false
--------------------------------------------------------------------------------
/code/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | 'env': {
4 | 'node': true,
5 | 'es2020': true,
6 | 'jest': true,
7 | 'truffle/globals': true,
8 | },
9 | 'extends': [
10 | 'standard',
11 | ],
12 | 'globals': {
13 | 'artifacts': 'readonly',
14 | 'contract': 'readonly',
15 | 'assert': 'readonly',
16 | 'web3': 'readonly'
17 | },
18 | // 'parser': '@babel/eslint-parser',
19 | 'rules': {
20 | 'no-await-in-loop': 0,
21 | 'no-underscore-dangle': 0,
22 | 'import/prefer-default-export': 0,
23 | 'import/no-extraneous-dependencies': 1,
24 | 'comma-dangle': 0,
25 | 'no-console': 0,
26 | 'no-mixed-operators': 0,
27 | 'new-cap': 0,
28 | 'max-len': 0,
29 | },
30 | 'parserOptions': {
31 | 'requireConfigFile': false,
32 | 'ecmaVersion': 2020
33 | },
34 | 'plugins': [
35 | '@babel',
36 | 'truffle',
37 | ],
38 | }
39 |
--------------------------------------------------------------------------------
/code/.gitattributes:
--------------------------------------------------------------------------------
1 | build/contracts/*.json binary
2 |
--------------------------------------------------------------------------------
/code/.solhint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "solhint:recommended",
3 | "plugins": [],
4 | "rules": {
5 | "avoid-suicide": "error",
6 | "avoid-sha3": "warn",
7 | "compiler-version": "off",
8 | "not-rely-on-time": "off",
9 | "func-visibility": [
10 | "warn",
11 | {
12 | "ignoreConstructors": true
13 | }
14 | ]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/code/.yarnclean:
--------------------------------------------------------------------------------
1 | # test directories
2 | __tests__
3 | test
4 | tests
5 | powered-test
6 |
7 | # asset directories
8 | docs
9 | doc
10 | website
11 | images
12 | assets
13 |
14 | # examples
15 | example
16 | examples
17 |
18 | # code coverage directories
19 | coverage
20 | .nyc_output
21 |
22 | # build scripts
23 | Makefile
24 | Gulpfile.js
25 | Gruntfile.js
26 |
27 | # configs
28 | appveyor.yml
29 | circle.yml
30 | codeship-services.yml
31 | codeship-steps.yml
32 | wercker.yml
33 | .tern-project
34 | .gitattributes
35 | .editorconfig
36 | .*ignore
37 | .eslintrc
38 | .jshintrc
39 | .flowconfig
40 | .documentup.json
41 | .yarn-metadata.json
42 | .travis.yml
43 |
44 | # misc
45 | *.md
46 |
--------------------------------------------------------------------------------
/code/alternatives/README.md:
--------------------------------------------------------------------------------
1 | ### Alternatives
2 |
3 | **WARNING**: This is a folder tracking alternatives considered and reviewed. It should not be used in production. They are designed solely with the scope of smart contracts. Other components such as the client do nnt work with the contracts here.
4 |
--------------------------------------------------------------------------------
/code/backend/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env"
5 | ]
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/code/backend/.eslintignore:
--------------------------------------------------------------------------------
1 | logs
2 | *.log
3 | node_modules/
4 | .eslintcache
5 | .env
6 | .yarn/
--------------------------------------------------------------------------------
/code/backend/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | 'env': {
4 | 'node': true,
5 | 'es2020': true,
6 | 'jest': true,
7 | 'truffle/globals': true,
8 | },
9 | 'extends': [
10 | 'standard',
11 | ],
12 | 'globals': {
13 | 'artifacts': 'readonly',
14 | 'contract': 'readonly',
15 | 'assert': 'readonly',
16 | 'web3': 'readonly'
17 | },
18 | // 'parser': '@babel/eslint-parser',
19 | 'rules': {
20 | 'no-await-in-loop': 0,
21 | 'no-underscore-dangle': 0,
22 | 'import/prefer-default-export': 0,
23 | 'import/no-extraneous-dependencies': 1,
24 | 'comma-dangle': 0,
25 | 'no-console': 0,
26 | 'no-mixed-operators': 0,
27 | 'new-cap': 0,
28 | 'max-len': 0,
29 | },
30 | 'parserOptions': {
31 | 'requireConfigFile': false,
32 | 'ecmaVersion': 2020
33 | },
34 | 'plugins': [
35 | '@babel',
36 | 'truffle',
37 | ],
38 | }
39 |
--------------------------------------------------------------------------------
/code/backend/.gitignore:
--------------------------------------------------------------------------------
1 | /certs/*
2 | !/certs/README.md
3 | !/certs/gen.sh
4 | backup.eslintrc.js
5 | /cache
6 | /es.env
7 | /scripts/es.sh
8 | /credentials/*
--------------------------------------------------------------------------------
/code/backend/bin/run.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | const apps = require('../app')
3 | const httpsServer = apps.httpsServer
4 | const httpServer = apps.httpServer
5 | console.log('Starting web server...')
6 |
7 | httpsServer.listen(process.env.HTTPS_PORT || 8446, () => {
8 | const addr = httpsServer.address()
9 | console.log(`HTTPS server listening on port ${addr.port} at ${addr.address}`)
10 | })
11 |
12 | httpServer.listen(process.env.PORT || 3002, () => {
13 | const addr = httpServer.address()
14 | console.log(`HTTP server listening on port ${addr.port} at ${addr.address}`)
15 | })
16 |
--------------------------------------------------------------------------------
/code/backend/certs/README.md:
--------------------------------------------------------------------------------
1 | For hosting temporary credentials. Run `./gen.sh` to generate a local dev certificate
2 |
--------------------------------------------------------------------------------
/code/backend/certs/gen.sh:
--------------------------------------------------------------------------------
1 | !/bin/bash
2 | openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
3 | -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=relay.onewallet.local" \
4 | -keyout test.key -out test.cert
5 |
--------------------------------------------------------------------------------
/code/backend/deploy/enable.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | sudo cp otp-wallet-backend.service /etc/systemd/system/otp-wallet-backend.service
3 | sudo systemctl start otp-wallet-backend
4 | sudo systemctl enable otp-wallet-backend
5 | systemctl status otp-wallet-backend
6 |
--------------------------------------------------------------------------------
/code/backend/deploy/log.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | journalctl -u otp-wallet-backend -f -n 1000
3 |
--------------------------------------------------------------------------------
/code/backend/deploy/otp-wallet-backend.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=OTP Wallet Backend
3 | Documentation=https://docs.otpwallet.xyz
4 | After=network.target
5 |
6 | [Service]
7 | Environment=PORT=80 HTTPS_PORT=443
8 | Type=simple
9 | User=worker
10 | WorkingDirectory=/opt/one-wallet/code/backend
11 | ExecStart=/usr/bin/node /opt/one-wallet/code/backend/bin/run.js
12 | Restart=on-failure
13 |
14 | [Install]
15 | WantedBy=multi-user.target
16 |
--------------------------------------------------------------------------------
/code/backend/logger.js:
--------------------------------------------------------------------------------
1 |
2 | const Logger = {
3 | log: (...args) => {
4 | console.log(...args)
5 | }
6 | }
7 |
8 | module.exports = { Logger }
9 |
--------------------------------------------------------------------------------
/code/backend/src/data/storage.js:
--------------------------------------------------------------------------------
1 | const { Storage: GCPStorage } = require('@google-cloud/storage')
2 | const config = require('../../config')
3 |
4 | let _storage = null
5 |
6 | const Storage = {
7 | client: () => {
8 | if (_storage) {
9 | return _storage
10 | }
11 | // if (config.solo) {
12 | // // TODO: mock it
13 | // throw new Error('Not implemented')
14 | // }
15 | // TODO: separate buckets for dev
16 | _storage = new GCPStorage({
17 | projectId: config.storage.projectId,
18 | credentials: config.storage.cred
19 | })
20 | return _storage
21 | }
22 | }
23 |
24 | module.exports = Storage
25 |
--------------------------------------------------------------------------------
/code/build/abi/Address.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/CommitManager.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/Context.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/ERC165.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/Enums.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/Executor.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/Forwardable.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/IDefaultReverseResolver.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/IERC165.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/IERC721Receiver.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/ONEWalletCodeHelper.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[],"name":"code","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/ONEWalletFactory.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes","name":"code","type":"bytes"}],"name":"predict","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"hasCode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes","name":"code","type":"bytes"}],"name":"deploy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/Recovery.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[],"name":"AUTO_RECOVERY_MANDATORY_WAIT_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUTO_RECOVERY_TRIGGER_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/Resolver.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"addr_","type":"address"}],"name":"setAddr","outputs":[],"stateMutability":"nonpayable","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/Staking.json:
--------------------------------------------------------------------------------
1 | [{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum Staking.StakingAction","name":"action","type":"uint8"},{"indexed":false,"internalType":"address","name":"validatorAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"result","type":"uint256"}],"name":"StakingFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum Staking.StakingAction","name":"action","type":"uint8"},{"indexed":false,"internalType":"address","name":"validatorAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"result","type":"uint256"}],"name":"StakingSuccess","type":"event"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/StakingPrecompilesSelectors.json:
--------------------------------------------------------------------------------
1 | [{"inputs":[{"internalType":"address","name":"delegatorAddress","type":"address"},{"internalType":"address","name":"validatorAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatorAddress","type":"address"},{"internalType":"address","name":"validatorAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Undelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatorAddress","type":"address"}],"name":"CollectRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"Migrate","outputs":[],"stateMutability":"nonpayable","type":"function"}]
--------------------------------------------------------------------------------
/code/build/abi/Strings.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/build/abi/Version.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/code/cli/.eslintignore:
--------------------------------------------------------------------------------
1 | /lib
2 |
--------------------------------------------------------------------------------
/code/cli/.gitignore:
--------------------------------------------------------------------------------
1 | /dist
2 | /build.sh
3 | /deploy.sh
4 | /wallets
5 | /lib
6 | /bin
7 | /webpack.config.js
8 |
--------------------------------------------------------------------------------
/code/cli/.yarnclean:
--------------------------------------------------------------------------------
1 | # test directories
2 | __tests__
3 | test
4 | tests
5 | powered-test
6 |
7 | # asset directories
8 | docs
9 | doc
10 | website
11 | images
12 | assets
13 |
14 | # examples
15 | example
16 | examples
17 |
18 | # code coverage directories
19 | coverage
20 | .nyc_output
21 |
22 | # build scripts
23 | Makefile
24 | Gulpfile.js
25 | Gruntfile.js
26 |
27 | # configs
28 | appveyor.yml
29 | circle.yml
30 | codeship-services.yml
31 | codeship-steps.yml
32 | wercker.yml
33 | .tern-project
34 | .gitattributes
35 | .editorconfig
36 | .*ignore
37 | .eslintrc
38 | .jshintrc
39 | .flowconfig
40 | .documentup.json
41 | .yarn-metadata.json
42 | .travis.yml
43 |
44 | # misc
45 | *.md
46 |
--------------------------------------------------------------------------------
/code/cli/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = (api) => {
2 | api.cache(true)
3 | const presets = [
4 | [
5 | '@babel/env',
6 | {
7 | useBuiltIns: 'usage',
8 | corejs: 3
9 | }
10 | ]
11 | ]
12 | const plugins = ['@babel/plugin-syntax-jsx', '@babel/plugin-transform-react-jsx', '@babel/plugin-transform-react-display-name']
13 | return { presets, plugins }
14 | }
15 |
--------------------------------------------------------------------------------
/code/cli/src/config.js:
--------------------------------------------------------------------------------
1 | import 'dotenv/config'
2 | import baseConfig from '../../lib/config/common'
3 | import mergeAll from 'lodash/fp/mergeAll'
4 | import path from 'path'
5 | const config = mergeAll({}, baseConfig, {
6 | defaultStorePath: process.env.DEFAULT_STORE_PATH || path.join(process.cwd(), 'wallets'),
7 | defaults: {
8 | },
9 | debug: process.env.DEBUG,
10 | })
11 | export default config
12 |
--------------------------------------------------------------------------------
/code/cli/src/constants.js:
--------------------------------------------------------------------------------
1 | export default {
2 | interval: 30 * 1000,
3 | defaultDuration: 3600 * 1000 * 24 * 364,
4 | defaultDailyLimit: process.env.DAILY_LIMIT | 1000, // ONEs
5 | maxTransferAttempts: 3,
6 | checkCommitInterval: 5000,
7 | }
8 |
--------------------------------------------------------------------------------
/code/cli/src/info.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Box, Text } from 'ink'
3 | import { stringify } from './util'
4 |
5 | const Info = ({ wallet }) => {
6 | const stringifiedWallet = wallet && stringify(wallet)
7 | return (
8 |
9 | {'-'.repeat(113)}
10 | {
11 | Object.keys(stringifiedWallet).map(k => {
12 | return (
13 |
14 |
15 | {k}
16 | |
17 | {stringifiedWallet[k]}
18 |
19 | {'-'.repeat(113)}
20 |
21 | )
22 | })
23 | }
24 |
25 | )
26 | }
27 |
28 | export default Info
29 |
--------------------------------------------------------------------------------
/code/cli/src/message.js:
--------------------------------------------------------------------------------
1 | const Messenger = {
2 | error: console.error,
3 | log: console.log
4 | }
5 |
6 | export const updateMessenger = ({ error, log }) => {
7 | Messenger.error = error
8 | Messenger.log = log
9 | }
10 |
11 | export const message = {
12 | error: (m) => console.error('[ERROR ]', m),
13 | warning: (m) => console.log('[WARNING]', m),
14 | info: (m) => console.log('[INFO ]', m),
15 | success: (m) => console.log('[SUCCESS]', m),
16 | }
17 |
--------------------------------------------------------------------------------
/code/cli/src/state.js:
--------------------------------------------------------------------------------
1 | import config from './config'
2 | import cloneDeep from 'lodash/fp/cloneDeep'
3 | import mergeAll from 'lodash/fp/merge'
4 | const state = {
5 | wallet: {
6 | relayer: config.defaults.relayer,
7 | network: config.defaults.network,
8 | relayerSecret: config.defaults.relayerSecret
9 | }
10 | }
11 |
12 | export const getState = () => cloneDeep(state)
13 | export const mergeState = (newState) => mergeAll(state, newState)
14 |
--------------------------------------------------------------------------------
/code/client/.babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = () => {
2 | const presets = [
3 | [
4 | "@babel/env",
5 | {
6 | useBuiltIns: "usage",
7 | corejs: 3
8 | }
9 | ]
10 | ];
11 | const plugins = ['@babel/plugin-syntax-jsx']
12 | return { presets, plugins };
13 | };
--------------------------------------------------------------------------------
/code/client/.env.sample:
--------------------------------------------------------------------------------
1 | GANACHE_RPC=http://192.168.2.2:7545
2 | DEPLOY_FACTORY_GANACHE=0x349f95E7EAB3fC1FbE8ba45d2677a47D46aDF5B4
3 | DEPLOY_DEPLOYER_GANACHE=0x6856bd5134cB84ABc84bAAe6030686Df362a594d
4 | DEPLOY_CODE_HELPER_GANACHE=0xCaFcd8946ED16731D7737A729beb3fD72b922C5c
5 |
--------------------------------------------------------------------------------
/code/client/.eslintignore:
--------------------------------------------------------------------------------
1 | src/proto/*
2 |
--------------------------------------------------------------------------------
/code/client/.gitignore:
--------------------------------------------------------------------------------
1 | /dist
2 | /build.sh
3 | /deploy.sh
4 | /build-*.sh
5 | /deploy-*.sh
6 | /dev.sh
7 | /dev-*.sh
--------------------------------------------------------------------------------
/code/client/.yarnclean:
--------------------------------------------------------------------------------
1 | # test directories
2 | __tests__
3 | test
4 | tests
5 | powered-test
6 |
7 | # asset directories
8 | docs
9 | doc
10 | website
11 | images
12 | assets
13 |
14 | # examples
15 | example
16 | examples
17 |
18 | # code coverage directories
19 | coverage
20 | .nyc_output
21 |
22 | # build scripts
23 | Makefile
24 | Gulpfile.js
25 | Gruntfile.js
26 |
27 | # configs
28 | appveyor.yml
29 | circle.yml
30 | codeship-services.yml
31 | codeship-steps.yml
32 | wercker.yml
33 | .tern-project
34 | .gitattributes
35 | .editorconfig
36 | .*ignore
37 | .eslintrc
38 | .jshintrc
39 | .flowconfig
40 | .documentup.json
41 | .yarn-metadata.json
42 | .travis.yml
43 |
44 | # misc
45 | *.md
46 |
--------------------------------------------------------------------------------
/code/client/assets/1wallet/app.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "1wallet",
3 | "short_anme": "1wallet",
4 | "display": "standalone",
5 | "start_url": "/?standalone=1",
6 | "icons": [
7 | {
8 | "src": "/1wallet/icons/manifest-icon-192.maskable.png",
9 | "sizes": "192x192",
10 | "type": "image/png",
11 | "purpose": "any"
12 | },
13 | {
14 | "src": "/1wallet/icons/manifest-icon-192.maskable.png",
15 | "sizes": "192x192",
16 | "type": "image/png",
17 | "purpose": "maskable"
18 | },
19 | {
20 | "src": "/1wallet/icons/manifest-icon-512.maskable.png",
21 | "sizes": "512x512",
22 | "type": "image/png",
23 | "purpose": "any"
24 | },
25 | {
26 | "src": "/1wallet/icons/manifest-icon-512.maskable.png",
27 | "sizes": "512x512",
28 | "type": "image/png",
29 | "purpose": "maskable"
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/code/client/assets/1wallet/icons/apple-icon-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/icons/apple-icon-180.png
--------------------------------------------------------------------------------
/code/client/assets/1wallet/icons/manifest-icon-192.maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/icons/manifest-icon-192.maskable.png
--------------------------------------------------------------------------------
/code/client/assets/1wallet/icons/manifest-icon-512.maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/icons/manifest-icon-512.maskable.png
--------------------------------------------------------------------------------
/code/client/assets/1wallet/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/logo.png
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1125-2436.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1125-2436.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1136-640.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1136-640.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1170-2532.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1170-2532.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1179-2556.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1179-2556.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1242-2208.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1242-2208.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1242-2688.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1242-2688.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1284-2778.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1284-2778.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1290-2796.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1290-2796.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1334-750.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1334-750.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1536-2048.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1536-2048.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1620-2160.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1620-2160.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1668-2224.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1668-2224.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1668-2388.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1668-2388.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-1792-828.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-1792-828.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2048-1536.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2048-1536.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2048-2732.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2048-2732.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2160-1620.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2160-1620.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2208-1242.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2208-1242.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2224-1668.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2224-1668.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2388-1668.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2388-1668.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2436-1125.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2436-1125.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2532-1170.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2532-1170.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2556-1179.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2556-1179.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2688-1242.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2688-1242.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2732-2048.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2732-2048.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2778-1284.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2778-1284.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-2796-1290.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-2796-1290.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-640-1136.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-640-1136.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-750-1334.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-750-1334.jpg
--------------------------------------------------------------------------------
/code/client/assets/1wallet/splash/apple-splash-828-1792.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/1wallet/splash/apple-splash-828-1792.jpg
--------------------------------------------------------------------------------
/code/client/assets/flags/ae.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/am.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/at.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/aw.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ax.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/code/client/assets/flags/az.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ba.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bb.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bd.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/be.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bf.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bg.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bh.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bj.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bq.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bs.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bv.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/bw.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ca.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cd.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cf.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cg.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ch.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ci.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cl.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cm.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cn.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/code/client/assets/flags/co.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cu.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cw.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/code/client/assets/flags/cz.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/de.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/dj.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/dk.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/dz.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ee.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/eh.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/code/client/assets/flags/et.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/code/client/assets/flags/fi.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/fm.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/code/client/assets/flags/fo.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/code/client/assets/flags/fr.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ga.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gb-eng.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gb-nir.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gb-sct.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gb.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ge.svg:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gf.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gg.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gh.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gl.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gm.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gn.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gp.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gr.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gw.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/code/client/assets/flags/gy.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/hu.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/id.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/il.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/in.svg:
--------------------------------------------------------------------------------
1 |
26 |
--------------------------------------------------------------------------------
/code/client/assets/flags/is.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/it.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/jm.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/jo.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/jp.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/km.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/code/client/assets/flags/kn.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/kp.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/code/client/assets/flags/kr.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/kw.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/la.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/lc.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/lr.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/code/client/assets/flags/lt.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/lu.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/lv.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ly.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mc.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mf.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mg.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mh.svg:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mk.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ml.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mm.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mq.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mu.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mv.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/mw.svg:
--------------------------------------------------------------------------------
1 |
25 |
--------------------------------------------------------------------------------
/code/client/assets/flags/na.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ne.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ng.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/nl.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/no.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/nr.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/nu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/pa.svg:
--------------------------------------------------------------------------------
1 |
21 |
--------------------------------------------------------------------------------
/code/client/assets/flags/pk.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/pl.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/pm.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/pr.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ps.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/pw.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/qa.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/re.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ro.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ru.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/rw.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sb.svg:
--------------------------------------------------------------------------------
1 |
24 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sc.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sd.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/se.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sh.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sj.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sl.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sn.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/code/client/assets/flags/so.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ss.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/st.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/code/client/assets/flags/sy.svg:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/code/client/assets/flags/td.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tf.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tg.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/code/client/assets/flags/th.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tl.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tn.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/code/client/assets/flags/to.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tt.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tw.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/code/client/assets/flags/tz.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ua.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/code/client/assets/flags/um.svg:
--------------------------------------------------------------------------------
1 |
26 |
--------------------------------------------------------------------------------
/code/client/assets/flags/us.svg:
--------------------------------------------------------------------------------
1 |
26 |
--------------------------------------------------------------------------------
/code/client/assets/flags/vc.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ve.svg:
--------------------------------------------------------------------------------
1 |
29 |
--------------------------------------------------------------------------------
/code/client/assets/flags/vn.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/code/client/assets/flags/wf.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ws.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/code/client/assets/flags/ye.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/yt.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/code/client/assets/flags/za.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/assets/metamask-add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/metamask-add.png
--------------------------------------------------------------------------------
/code/client/assets/metamask-s1-add.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/metamask-s1-add.jpg
--------------------------------------------------------------------------------
/code/client/assets/metamask-s1-switch.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/metamask-s1-switch.jpg
--------------------------------------------------------------------------------
/code/client/assets/metamask-switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/metamask-switch.png
--------------------------------------------------------------------------------
/code/client/assets/modulo/app.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "OTP Wallet",
3 | "short_anme": "OTP Wallet",
4 | "display": "standalone",
5 | "start_url": "/?standalone=1",
6 | "icons": [
7 | {
8 | "src": "/modulo/icons/manifest-icon-192.maskable.png",
9 | "sizes": "192x192",
10 | "type": "image/png",
11 | "purpose": "any"
12 | },
13 | {
14 | "src": "/modulo/icons/manifest-icon-192.maskable.png",
15 | "sizes": "192x192",
16 | "type": "image/png",
17 | "purpose": "maskable"
18 | },
19 | {
20 | "src": "/modulo/icons/manifest-icon-512.maskable.png",
21 | "sizes": "512x512",
22 | "type": "image/png",
23 | "purpose": "any"
24 | },
25 | {
26 | "src": "/modulo/icons/manifest-icon-512.maskable.png",
27 | "sizes": "512x512",
28 | "type": "image/png",
29 | "purpose": "maskable"
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/code/client/assets/modulo/icons/apple-icon-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/icons/apple-icon-180.png
--------------------------------------------------------------------------------
/code/client/assets/modulo/icons/manifest-icon-192.maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/icons/manifest-icon-192.maskable.png
--------------------------------------------------------------------------------
/code/client/assets/modulo/icons/manifest-icon-512.maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/icons/manifest-icon-512.maskable.png
--------------------------------------------------------------------------------
/code/client/assets/modulo/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/logo.png
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1125-2436.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1125-2436.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1136-640.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1136-640.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1170-2532.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1170-2532.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1179-2556.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1179-2556.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1242-2208.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1242-2208.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1242-2688.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1242-2688.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1284-2778.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1284-2778.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1290-2796.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1290-2796.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1334-750.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1334-750.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1536-2048.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1536-2048.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1620-2160.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1620-2160.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1668-2224.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1668-2224.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1668-2388.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1668-2388.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-1792-828.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-1792-828.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2048-1536.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2048-1536.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2048-2732.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2048-2732.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2160-1620.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2160-1620.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2208-1242.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2208-1242.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2224-1668.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2224-1668.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2388-1668.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2388-1668.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2436-1125.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2436-1125.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2532-1170.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2532-1170.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2556-1179.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2556-1179.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2688-1242.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2688-1242.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2732-2048.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2732-2048.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2778-1284.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2778-1284.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-2796-1290.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-2796-1290.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-640-1136.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-640-1136.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-750-1334.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-750-1334.jpg
--------------------------------------------------------------------------------
/code/client/assets/modulo/splash/apple-splash-828-1792.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/modulo/splash/apple-splash-828-1792.jpg
--------------------------------------------------------------------------------
/code/client/assets/wc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/assets/wc.png
--------------------------------------------------------------------------------
/code/client/dev-harmony.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | export NETWORK=harmony-mainnet
3 | export RELAYER=hiddenstate
4 | export RELAYER_SECRET=onewallet
5 |
6 | export MIN_WALLET_VERSION=3
7 | export PUBLIC_URL=
8 | # harmony 1wallet DSN
9 | export SENTRY_DSN=https://f87ac552e9394dcbae047f9acb4d587d@o896820.ingest.sentry.io/5841414
10 | export WEBAPP_NAME="1wallet"
11 | export LOGO_ID="harmony"
12 | export LOGO_LINK="https://harmony.one"
13 | export APP_LINK="https://harmony.one/1wallet"
14 | export FAVICON="assets/1wallet/logo.png"
15 | export TITLE="Harmony 1wallet | By Modulo.so"
16 |
17 | yarn debug
18 |
--------------------------------------------------------------------------------
/code/client/dev.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | export DEBUG=1
3 | export MIN_WALLET_VERSION=3
4 | export PUBLIC_URL=
5 | export SENTRY_DSN=https://9b526c6ee7a44b35b05a1913eb57df0c@o910905.ingest.sentry.io/5850621
6 | export ROOT_URL=https://localhost:3000
7 | yarn run dev
8 |
--------------------------------------------------------------------------------
/code/client/src/api/index.js:
--------------------------------------------------------------------------------
1 | import { api, initAPI, initBlockchain } from '../../../lib/api'
2 |
3 | export default api
4 | export { initAPI, initBlockchain }
5 |
--------------------------------------------------------------------------------
/code/client/src/app.less:
--------------------------------------------------------------------------------
1 | // https://ant.design/docs/react/customize-theme-variable
2 | // This relies on css variables: https://caniuse.com/css-variables
3 |
4 | @import 'antd/dist/antd.variable.min.css';
5 |
6 | @import './styles/ant.less'; // some overrides on ant styles from v1 ui
7 | @import './styles/v2ant.less'; // some overrides on ant styles from v2 ui (behind `v2ui` class)
8 |
9 | input[type="number"] {
10 | -moz-appearance: textfield;
11 | }
12 | input[type="number"]::-webkit-inner-spin-button,
13 | input[type="number"]::-webkit-outer-spin-button {
14 | -webkit-appearance: none;
15 | margin: 0;
16 | }
17 |
--------------------------------------------------------------------------------
/code/client/src/assets/bnb.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/src/assets/busd.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/src/assets/icons/nft.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/code/client/src/assets/modulo-logo-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/src/assets/modulo-logo-h.png
--------------------------------------------------------------------------------
/code/client/src/assets/modulo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/src/assets/modulo.png
--------------------------------------------------------------------------------
/code/client/src/assets/onemoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/src/assets/onemoon.png
--------------------------------------------------------------------------------
/code/client/src/assets/tether.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/code/client/src/assets/viperswap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/code/client/src/assets/viperswap.png
--------------------------------------------------------------------------------
/code/client/src/components/CommitRevealProgress.jsx:
--------------------------------------------------------------------------------
1 | import Row from 'antd/es/row'
2 | import Spin from 'antd/es/spin'
3 | import Steps from 'antd/es/steps'
4 | import React from 'react'
5 | import { useWindowDimensions } from '../util'
6 | const { Step } = Steps
7 |
8 | export const CommitRevealProgress = ({ stage, style }) => {
9 | const { isMobile } = useWindowDimensions()
10 | return (
11 | <>
12 | {stage >= 0 && (
13 |
14 |
15 | } title='Prepare' description='Preparing signature' />
16 | } title='Commit' description='Locking-in operation' />
17 | } title='Finalize' description='Submitting proofs' />
18 |
19 |
)}
20 | >
21 | )
22 | }
23 |
--------------------------------------------------------------------------------
/code/client/src/components/Grid.jsx:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components'
2 | import Row from 'antd/es/row'
3 |
4 | export const TallRow = styled(Row)`
5 | margin-top: 32px;
6 | margin-bottom: 32px;
7 | `
8 |
9 | export const AverageRow = styled(Row)`
10 | margin-top: 16px;
11 | margin-bottom: 16px;
12 | `
13 |
--------------------------------------------------------------------------------
/code/client/src/components/ScanGASteps.jsx:
--------------------------------------------------------------------------------
1 | import Steps from 'antd/es/steps'
2 | import React from 'react'
3 | const { Step } = Steps
4 |
5 | const ScanGASteps = () => (
6 |
7 |
8 |
9 |
10 |
11 | )
12 |
13 | export default ScanGASteps
14 |
--------------------------------------------------------------------------------
/code/client/src/components/SiderMenu/Common.jsx:
--------------------------------------------------------------------------------
1 | import HarmonyLogo from '../../assets/harmony.svg'
2 | import ModuloLogo from '../../assets/modulo-logo-h.png'
3 | import config from '../../config'
4 |
5 | export const RouteActionMap = {
6 | show: 'wallet',
7 | nft: 'wallet/nft',
8 | assets: 'wallet/assets',
9 | swap: 'wallet/swap',
10 | stake: 'wallet/stake',
11 | restore: 'internal/restore',
12 | tool: 'internal/tool',
13 | }
14 |
15 | export const mobileMenuItemStyle = {
16 | padding: '0 10px',
17 | fontSize: 12
18 | }
19 |
20 | export const Logos = {
21 | harmony: HarmonyLogo,
22 | modulo: ModuloLogo,
23 | }
24 | export const Logo = Logos[config.logoId] ?? ModuloLogo
25 |
--------------------------------------------------------------------------------
/code/client/src/constants/errors.js:
--------------------------------------------------------------------------------
1 |
2 | export const AddressError = {
3 | Unknown: (ex) => new Error('Invalid address. Inner error: ' + ex && ex.message),
4 | InvalidBech32Address: (ex) => new Error('Invalid bech32 address. ' + ex && ex.message),
5 | InvalidHexAddress: (ex) => new Error('Invalid hex address' + ex && ex.message),
6 | }
7 |
--------------------------------------------------------------------------------
/code/client/src/init.js:
--------------------------------------------------------------------------------
1 | import config from './config'
2 | import message from './message'
3 | import storage from './storage'
4 | import { setMessage } from '../../lib/api/message'
5 | import { setStorage } from '../../lib/api/storage'
6 | import { setConfig } from '../../lib/config/provider'
7 | setMessage(message)
8 | setStorage(storage)
9 | setConfig(config)
10 |
--------------------------------------------------------------------------------
/code/client/src/pages/Show/WalletConnectRedirect.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Redirect } from 'react-router-dom'
3 | import Paths from '../../constants/paths'
4 |
5 | const WalletConnectRedirect = ({ address }) => {
6 | return
7 | }
8 | export default WalletConnectRedirect
9 |
--------------------------------------------------------------------------------
/code/client/src/proto/localExportMessage.js:
--------------------------------------------------------------------------------
1 | import protobuf from 'protobufjs/light'
2 | const Field = protobuf.Field
3 |
4 | export function LocalExportMessage (properties) {
5 | protobuf.Message.call(this, properties)
6 | }
7 |
8 | Field.d(1, 'string')(LocalExportMessage.prototype, 'wallet')
9 | Field.d(2, 'bytes', 'repeated')(LocalExportMessage.prototype, 'layers')
10 |
--------------------------------------------------------------------------------
/code/client/src/proto/wallet.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | message InnerTree {
4 | repeated bytes layers = 1;
5 | }
6 |
7 | message SimpleWalletExport {
8 | string address = 1;
9 | string name = 2;
10 | bool expert = 3;
11 | string state = 4; // JSON serialized
12 | repeated bytes layers = 5;
13 | repeated InnerTree innerTrees = 6;
14 | }
15 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/balance/actions.js:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 | const deleteBalance = createAction('DELETE_BALANCE')
3 |
4 | const fetchBalance = createAction('FETCH_BALANCE')
5 | const fetchBalanceSuccess = createAction('FETCH_BALANCE_SUCCESS')
6 |
7 | const fetchTokenBalance = createAction('FETCH_TOKEN_BALANCE')
8 | const fetchTokenBalanceSuccess = createAction('FETCH_TOKEN_BALANCE_SUCCESS')
9 |
10 | export default {
11 | deleteBalance,
12 |
13 | fetchBalance,
14 | fetchBalanceSuccess,
15 | fetchTokenBalance,
16 | fetchTokenBalanceSuccess,
17 | }
18 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/balance/index.js:
--------------------------------------------------------------------------------
1 | import reducer from './reducers'
2 |
3 | export { default as balanceSagas } from './sagas'
4 | export { default as balanceActions } from './actions'
5 |
6 | export const persistConfig = {
7 | key: 'balance',
8 | blacklist: []
9 | }
10 |
11 | export default reducer
12 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/cache/index.js:
--------------------------------------------------------------------------------
1 | import reducer from './reducers'
2 |
3 | export { default as cacheSagas } from './sagas'
4 | export { default as cacheActions } from './actions'
5 |
6 | export const persistConfig = {
7 | key: 'cache',
8 | blacklist: []
9 | }
10 |
11 | export default reducer
12 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/global/index.js:
--------------------------------------------------------------------------------
1 | import reducer from './reducers'
2 |
3 | export { default as globalSagas } from './sagas'
4 | export { default as globalActions } from './actions'
5 |
6 | export const persistConfig = {
7 | key: 'global',
8 | blacklist: ['error', 'fetching']
9 | }
10 |
11 | export default reducer
12 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/global/sagas.js:
--------------------------------------------------------------------------------
1 | import { put, all, call, takeLatest } from 'redux-saga/effects'
2 | import globalActions from './actions'
3 | import api from '../../../api'
4 |
5 | function * handleFetchPrice () {
6 | yield put(globalActions.setFetchStatus(true))
7 | try {
8 | const price = yield call(api.binance.getPrice)
9 | yield all([
10 | put(globalActions.fetchPriceSuccess(price)),
11 | put(globalActions.setFetchStatus(false)),
12 | ])
13 | } catch (err) {
14 | console.error(err)
15 | yield all([
16 | put(globalActions.setFetchStatus(false)),
17 | put(globalActions.setError(new Error('Failed to get ONE/USDT price'))),
18 | ])
19 | }
20 | }
21 |
22 | function * globalSagas () {
23 | yield all([
24 | takeLatest(globalActions.fetchPrice().type, handleFetchPrice),
25 | ])
26 | }
27 |
28 | export default globalSagas
29 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/index.js:
--------------------------------------------------------------------------------
1 | export { default as global } from './global'
2 | export { default as wallet } from './wallet'
3 | export { default as cache } from './cache'
4 | export { default as balance } from './balance'
5 |
--------------------------------------------------------------------------------
/code/client/src/state/modules/wallet/index.js:
--------------------------------------------------------------------------------
1 | import reducer from './reducers'
2 |
3 | export { default as walletSagas } from './sagas'
4 | export { default as walletActions } from './actions'
5 |
6 | export const persistConfig = {
7 | key: 'wallet',
8 | blacklist: []
9 | }
10 |
11 | export default reducer
12 |
--------------------------------------------------------------------------------
/code/client/src/state/rootSaga.js:
--------------------------------------------------------------------------------
1 | import { sagaMiddleware } from './store'
2 | import { walletSagas } from './modules/wallet'
3 | import { cacheSagas } from './modules/cache'
4 | import { globalSagas } from './modules/global'
5 | import { balanceSagas } from './modules/balance'
6 |
7 | function run () {
8 | sagaMiddleware.run(globalSagas)
9 | sagaMiddleware.run(walletSagas)
10 | sagaMiddleware.run(cacheSagas)
11 | sagaMiddleware.run(balanceSagas)
12 | }
13 |
14 | export default { run }
15 |
--------------------------------------------------------------------------------
/code/client/src/storage/index.js:
--------------------------------------------------------------------------------
1 | import config from '../config'
2 | import localforage from 'localforage'
3 |
4 | const storage = localforage.createInstance({
5 | name: config.appId,
6 | driver: localforage.INDEXEDDB,
7 | version: 1.0,
8 | storeName: 'ONEWalletStorage',
9 | })
10 |
11 | export default storage
12 |
--------------------------------------------------------------------------------
/code/client/src/styles/ant.less:
--------------------------------------------------------------------------------
1 | // Override ant styles
2 |
3 | //@layout-header-background: #ffffff;
4 | .ant-carousel {
5 | width: 100%;
6 | }
7 | .ant-carousel .slick-prev,
8 | .ant-carousel .slick-next,
9 | .ant-carousel .slick-prev:hover,
10 | .ant-carousel .slick-next:hover {
11 | font-size: inherit;
12 | color: currentColor;
13 | }
14 | .ant-carousel .slick-prev::before{
15 | content: "";
16 | }
17 | .ant-carousel .slick-next::before{
18 | content: "";
19 | }
20 |
21 | .ant-input:focus {
22 | box-shadow: none !important;
23 | color: #000000;
24 | border-right-width: 0 !important;
25 | }
26 |
27 | .ant-input:hover {
28 | border-right-width: 0 !important;
29 | }
--------------------------------------------------------------------------------
/code/client/src/styles/v2ant.less:
--------------------------------------------------------------------------------
1 | .v2ui {
2 | .ant-layout-sider {
3 | .ant-divider:not(.ant-divider-with-text) {
4 | width: 10%;
5 | min-width: 10%;
6 | margin-left: 24px;
7 | }
8 | a {
9 | color: inherit;
10 | }
11 | .secondary-menu .ant-menu-item {
12 | height: 20px;
13 | line-height: 20px;
14 | }
15 | }
16 |
17 | .wallet-stats-info {
18 | .ant-tag-has-color {
19 | color: inherit;
20 | border-color: #d9d9d9;
21 | }
22 | .ant-statistic-title {
23 | text-transform: capitalize;
24 | font-size: smaller;
25 | }
26 | .ant-statistic-content-prefix {
27 | margin-right: 0;
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/code/compile.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | solc @openzeppelin/=$(pwd)/node_modules/@openzeppelin/ @ensdomains/=$(pwd)/node_modules/@ensdomains/ --optimize contracts/ONEWallet.sol
3 |
--------------------------------------------------------------------------------
/code/contracts/Forwardable.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Apache-2.0
2 | pragma solidity ^0.8.4;
3 |
4 | abstract contract Forwardable{
5 | function _getForwardAddress() internal view virtual returns (address payable){
6 | return payable(address(0));
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/code/contracts/ProxyWallet.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Apache-2.0
2 | pragma solidity ^0.8.4;
3 | import "./IONEWallet.sol";
4 |
5 | contract ProxyWallet {
6 | function commit(IONEWallet dest, bytes32 hash, bytes32 paramsHash, bytes32 verificationHash) external {
7 | dest.commit(hash, paramsHash, verificationHash);
8 | }
9 |
10 | function reveal(IONEWallet dest, IONEWallet.AuthParams calldata auth, IONEWallet.OperationParams calldata op) external {
11 | dest.reveal(auth, op);
12 | }
13 |
14 | function retire(IONEWallet dest) external {
15 | dest.retire();
16 | }
17 | }
--------------------------------------------------------------------------------
/code/contracts/Recovery.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Apache-2.0
2 | pragma solidity ^0.8.4;
3 |
4 | // does not need to be deployed
5 | library Recovery {
6 | address constant ONE_WALLET_TREASURY = 0x7534978F9fa903150eD429C486D1f42B7fDB7a61;
7 | uint256 public constant AUTO_RECOVERY_TRIGGER_AMOUNT = 1 ether;
8 | uint256 public constant AUTO_RECOVERY_MANDATORY_WAIT_TIME = 14 days;
9 |
10 | function isRecoveryAddressSet(address recoveryAddress) internal pure returns (bool) {
11 | return recoveryAddress != address(0) && recoveryAddress != ONE_WALLET_TREASURY;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/code/contracts/Version.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Apache-2.0
2 | pragma solidity ^0.8.4;
3 |
4 | // does not need to be deployed
5 | library Version{
6 | uint32 constant majorVersion = 0x10; // a change would require client to migrate
7 | uint32 constant minorVersion = 0x1; // a change would not require the client to migrate
8 | }
9 |
--------------------------------------------------------------------------------
/code/env/ganache-new.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # Use if you want to emulate 2-seconds per block
3 | #ganache -b 2 --server.ws --database.dbPath "./db"
4 |
5 | ganache --server.ws --database.dbPath "./db"
--------------------------------------------------------------------------------
/code/export.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | export PATH=$(pwd)/node_modules/.bin:$PATH
3 |
--------------------------------------------------------------------------------
/code/extensions/deprecated.js:
--------------------------------------------------------------------------------
1 | const ONEWalletV5 = require('../build/contracts-old/ONEWalletV5.json')
2 | const ONEWalletV6 = require('../build/contracts-old/ONEWalletV6.json')
3 |
4 | module.exports = {
5 | ONEWalletV5,
6 | ONEWalletV6,
7 | }
8 |
--------------------------------------------------------------------------------
/code/flattened/.gitignore:
--------------------------------------------------------------------------------
1 | *.sol
2 |
--------------------------------------------------------------------------------
/code/flattened/README.md:
--------------------------------------------------------------------------------
1 | Flattened contract for explorer verification. Generate at `/code` directory using `yarn run flatten`
2 |
3 | You need to install truffle-flattener first. Use a version that supports latest syntax. Try:
4 |
5 | ```
6 | npm install -g https://github.com/polymorpher/truffle-flattener
7 | ```
8 |
--------------------------------------------------------------------------------
/code/lib/api/message.js:
--------------------------------------------------------------------------------
1 | let message
2 | const setMessage = (newMessage) => {
3 | message = newMessage
4 | }
5 | const getMessage = () => message
6 |
7 | module.exports = {
8 | setMessage,
9 | getMessage
10 | }
11 |
--------------------------------------------------------------------------------
/code/lib/api/storage.js:
--------------------------------------------------------------------------------
1 | let storage
2 | const setStorage = (newStorage) => {
3 | storage = newStorage
4 | }
5 | const getStorage = () => storage
6 |
7 | module.exports = {
8 | setStorage,
9 | getStorage
10 | }
11 |
--------------------------------------------------------------------------------
/code/lib/config/provider.js:
--------------------------------------------------------------------------------
1 | const _config = require('./common')
2 | let config = _config
3 | const setConfig = (newConfig) => {
4 | config = newConfig
5 | }
6 | const getConfig = () => config
7 |
8 | module.exports = {
9 | setConfig,
10 | getConfig
11 | }
12 |
--------------------------------------------------------------------------------
/code/lib/params.js:
--------------------------------------------------------------------------------
1 | const baseParameters = {
2 | hasher: process.env.DEFAULT_HASHER || 'sha256',
3 | baseRandomness: parseInt(process.env.BASE_RANDOMNESS || 20),
4 | randomnessDamping: parseInt(process.env.RANDOMNESS_DAMPING || 2),
5 | argon2Damping: parseInt(process.env.ARGON2_DAMPING || 2),
6 | }
7 |
8 | module.exports = {
9 | // keys: regex for version matching; values: hasher, baseRandomness, randomnessDamping, argon2Damping
10 | '.*': {
11 | ...baseParameters
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/code/relayer/.gitignore:
--------------------------------------------------------------------------------
1 | /certs/*
2 | !/certs/README.md
3 | !/certs/gen.sh
4 | backup.eslintrc.js
5 | /cache
6 | /es.env
7 | /scripts/es.sh
8 | /deploy/cp-contracts.sh
9 | /scripts/upload-cache.sh
10 | /scripts/download-cache.sh
11 | /scripts/upload-build.sh
12 |
--------------------------------------------------------------------------------
/code/relayer/bin/run.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | const apps = require('../app')
3 | const httpsServer = apps.httpsServer
4 | const httpServer = apps.httpServer
5 | console.log('Starting web server...')
6 |
7 | httpsServer.listen(process.env.HTTPS_PORT || 8445, () => {
8 | const addr = httpsServer.address()
9 | console.log(`HTTPS server listening on port ${addr.port} at ${addr.address}`)
10 | })
11 |
12 | httpServer.listen(process.env.PORT || 3001, () => {
13 | const addr = httpServer.address()
14 | console.log(`HTTP server listening on port ${addr.port} at ${addr.address}`)
15 | })
16 |
--------------------------------------------------------------------------------
/code/relayer/certs/README.md:
--------------------------------------------------------------------------------
1 | For hosting temporary credentials. Run `./gen.sh` to generate a local dev certificate
2 |
--------------------------------------------------------------------------------
/code/relayer/certs/gen.sh:
--------------------------------------------------------------------------------
1 | !/bin/bash
2 | openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
3 | -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=relay.onewallet.local" \
4 | -keyout test.key -out test.cert
5 |
--------------------------------------------------------------------------------
/code/relayer/deploy/enable.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | sudo cp otp-wallet-relayer.service /etc/systemd/system/otp-wallet-relayer.service
3 | sudo systemctl start otp-wallet-relayer
4 | sudo systemctl enable otp-wallet-relayer
5 | systemctl status otp-wallet-relayer
6 |
--------------------------------------------------------------------------------
/code/relayer/deploy/log.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | journalctl -u otp-wallet-relayer -f -n 1000
3 |
--------------------------------------------------------------------------------
/code/relayer/deploy/otp-wallet-relayer.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=OTP Wallet Relayer
3 | Documentation=https://docs.otpwallet.xyz
4 | After=network.target
5 |
6 | [Service]
7 | Environment=PORT=80 HTTPS_PORT=443
8 | Type=simple
9 | User=worker
10 | WorkingDirectory=/opt/one-wallet/code/relayer
11 | ExecStart=/usr/bin/node /opt/one-wallet/code/relayer/bin/run.js
12 | Restart=on-failure
13 |
14 | [Install]
15 | WantedBy=multi-user.target
16 |
--------------------------------------------------------------------------------
/code/relayer/deploy/port.sh:
--------------------------------------------------------------------------------
1 | !#/bin/sh
2 | sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
3 | sudo iptables -A INPUT -i eth0 -p tcp --dport 3000 -j ACCEPT
4 | sudo iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
5 | sudo iptables -A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT
6 | sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
7 | sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
8 | sudo iptables --flush
9 |
--------------------------------------------------------------------------------
/code/relayer/logger.js:
--------------------------------------------------------------------------------
1 |
2 | const Logger = {
3 | log: (...args) => {
4 | console.log(...args)
5 | }
6 | }
7 |
8 | module.exports = { Logger }
9 |
--------------------------------------------------------------------------------
/code/relayer/routes/rl.js:
--------------------------------------------------------------------------------
1 | const rateLimit = require('express-rate-limit')
2 |
3 | const generalLimiter = (args) => rateLimit({
4 | windowMs: 1000 * 60,
5 | max: 6,
6 | keyGenerator: req => req.fingerprint?.hash || '',
7 | ...args,
8 |
9 | })
10 |
11 | const walletAddressLimiter = (args) => rateLimit({
12 | windowMs: 1000 * 60,
13 | keyGenerator: req => req.body.address || '',
14 | ...args,
15 |
16 | })
17 |
18 | const rootHashLimiter = args => rateLimit({
19 | windowMs: 1000 * 60,
20 | keyGenerator: req => req.body.root || '',
21 | ...args,
22 | })
23 |
24 | const globalLimiter = args => rateLimit({
25 | windowMs: 1000 * 60,
26 | keyGenerator: req => '',
27 | ...args,
28 | })
29 |
30 | module.exports = { generalLimiter, walletAddressLimiter, rootHashLimiter, globalLimiter }
31 |
--------------------------------------------------------------------------------
/code/relayer/scripts/dupcache.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | FROM=$1
3 | TO=$2
4 | mkdir -p cache/$TO
5 | cp cache/$FROM/* cache/$TO
6 |
--------------------------------------------------------------------------------
/code/relayer/scripts/rmcache.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | VERSION=$1
3 | PATTERN=$2
4 | rm cache/$VERSION/$PATTERN*
5 |
--------------------------------------------------------------------------------
/code/relayer/scripts/rmcache2.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | VERSION=$1
3 | PATTERN=$2
4 | rm cache/$VERSION/*$PATTERN
5 |
--------------------------------------------------------------------------------
/code/scripts/abi.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs').promises
2 | const path = require('path')
3 | const contractDir = path.join(__dirname, '..', 'build', 'contracts')
4 | const abiDir = path.join(__dirname, '..', 'build', 'abi')
5 | async function main () {
6 | await fs.mkdir(abiDir, { recursive: true })
7 | const contractFiles = await fs.readdir(contractDir)
8 | for (const f of contractFiles) {
9 | const contract = require(path.join(contractDir, f))
10 | if (contract.abi) {
11 | await fs.writeFile(path.join(abiDir, f), JSON.stringify(contract.abi))
12 | }
13 | }
14 | }
15 | main()
16 |
--------------------------------------------------------------------------------
/code/scripts/printDeployAddresses.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs').promises
2 | const path = require('path')
3 | const CACHE = process.env.CACHE || './relayer/cache'
4 | const VERSION = process.env.CACHE || 'v0.16.1'
5 | const VARS = {
6 | DEPLOY_FACTORY: 'ONEWalletFactory',
7 | DEPLOY_DEPLOYER: 'ONEWalletFactoryHelper',
8 | DEPLOY_CODE_HELPER: 'ONEWalletCodeHelper',
9 | }
10 |
11 | const SUFFIXES = {
12 | 'eth-ganache': 'GANACHE',
13 | 'harmony-mainnet': 'MAINNET',
14 | 'harmony-testnet': 'TESTNET',
15 | }
16 |
17 | async function main () {
18 | const p = path.join(CACHE, VERSION)
19 | for (const [k, v] of Object.entries(VARS)) {
20 | for (const [ks, vs] of Object.entries(SUFFIXES)) {
21 | const pp = path.join(p, `${v}-${ks}`)
22 | const key = `${k}_${vs}`
23 | const content = await fs.readFile(pp, { encoding: 'utf-8' })
24 | const [address] = content.split(',')
25 | console.log(`${key}=${address}`)
26 | }
27 | }
28 | }
29 | main()
--------------------------------------------------------------------------------
/code/size.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | cat build/contracts/ONEWallet.json| jq -r '.deployedBytecode' | wc -c
3 |
--------------------------------------------------------------------------------
/code/test/DEVELOPER.MD:
--------------------------------------------------------------------------------
1 | # NOTICE
2 |
3 | The content of this document is being worked on, and will be available later in April 2022.
4 |
5 | # DEVELOPER GUIDE
6 |
7 | ## ONE Wallet Overview
8 |
9 | ### Smart Contracts
10 |
11 | ### Relayer/API
12 |
13 | ### Client
14 |
15 | ## Functional Overview
16 |
17 | ### OTP
18 |
19 | ### Admin
20 |
21 | ### Native
22 |
23 | ### Tokens
24 |
25 | ### Domains
26 |
27 | ### Utility
28 |
29 | ## Operation Overview
30 |
31 | ## Anatomoy of a Transaction
32 |
33 | ## Building on ONEWallet
34 |
35 | ### Writing Transactions
36 |
37 | ### Testing your Transactions
38 |
39 |
40 |
--------------------------------------------------------------------------------
/legacy/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env"
5 | ]
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/legacy/.env.sample:
--------------------------------------------------------------------------------
1 | ETH_GANACHE_KEY=60537f2b5c5fa6180d3b65c181f005828ddb2799a2d776cf7c5f5ce1935a2f8a
--------------------------------------------------------------------------------
/legacy/.yarnclean:
--------------------------------------------------------------------------------
1 | # test directories
2 | __tests__
3 | test
4 | tests
5 | powered-test
6 |
7 | # asset directories
8 | docs
9 | doc
10 | website
11 | images
12 | assets
13 |
14 | # examples
15 | example
16 | examples
17 |
18 | # code coverage directories
19 | coverage
20 | .nyc_output
21 |
22 | # build scripts
23 | Makefile
24 | Gulpfile.js
25 | Gruntfile.js
26 |
27 | # configs
28 | appveyor.yml
29 | circle.yml
30 | codeship-services.yml
31 | codeship-steps.yml
32 | wercker.yml
33 | .tern-project
34 | .gitattributes
35 | .editorconfig
36 | .*ignore
37 | .eslintrc
38 | .jshintrc
39 | .flowconfig
40 | .documentup.json
41 | .yarn-metadata.json
42 | .travis.yml
43 |
44 | # misc
45 | *.md
46 |
--------------------------------------------------------------------------------
/legacy/README.md:
--------------------------------------------------------------------------------
1 | # WARNING: this folder is no longer maintained. It is kept for historical references only.
2 |
3 | Legacy code from https://github.com/hashmesan/harmony-totp/commit/21038e37a73d2fcdcea56fb39f30313f59c2609d
4 |
5 | For reference only. No longer used since 6/13/2021.
6 |
7 | Upgraded and refactored for
8 |
9 | - bug fixes: smart contract, tests, etc.
10 | - feature and speed improvement
11 | - eslint, proper webpack, babel, etc.
12 | - ES2020 syntax, await/async, etc.
13 | - React Hook
14 | - overall better efficiency
15 | - benchmarking UI
16 | - overall UI rebuild.
17 |
--------------------------------------------------------------------------------
/legacy/config.js:
--------------------------------------------------------------------------------
1 | require('dotenv').config()
2 |
3 | module.exports = {
4 | harmony: {
5 | testnet: {
6 | key: process.env.HARMONY_TESTNET_KEY || '',
7 | url: 'https://api.s0.b.hmny.io'
8 | },
9 | mainnet: {
10 | key: process.env.HARMONY_MAINNET_KEY || '',
11 | url: 'https://api.s0.t.hmny.io'
12 | }
13 | },
14 | eth: {
15 | rinkeby: {
16 | url: process.env.ETH_RINKEBY_URL,
17 | key: process.env.ETH_RINKEBY_KEY || '',
18 | },
19 | ganache: {
20 | url: process.env.ETH_GANACHE_URL || 'http://127.0.0.1:7545',
21 | key: process.env.ETH_GANACHE_KEY,
22 | }
23 | },
24 | gasLimit: process.env.GAS_LIMIT,
25 | gasPrice: process.env.GAS_PRICE,
26 | verbose: process.env.VERBOSE === 'true' || process.env.VERBOSE === '1'
27 | }
28 |
--------------------------------------------------------------------------------
/legacy/contract/core/wallet_data.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.7.6;
2 | pragma experimental ABIEncoderV2;
3 |
4 | library Core {
5 | struct GuardianInfo {
6 | bool exists;
7 | uint128 index;
8 | }
9 |
10 | struct RecoveryInfo {
11 | bytes16 rootHash;
12 | uint8 merkelHeight;
13 | uint timePeriod;
14 | uint timeOffset;
15 | uint expiration;
16 | }
17 |
18 | struct Wallet {
19 | bytes16 rootHash;
20 | uint8 merkelHeight;
21 | uint timePeriod;
22 | uint timeOffset;
23 | address payable drainAddr;
24 |
25 | // the list of guardians
26 | address[] guardians;
27 | // the info about guardians
28 | mapping(address => GuardianInfo) info;
29 |
30 |
31 | // daily limit
32 | uint dailyLimit;
33 | uint lastDay;
34 | uint spentToday;
35 |
36 | // recovery
37 | RecoveryInfo recovery;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/legacy/webclient/.babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = () => {
2 | const presets = [
3 | [
4 | "@babel/env",
5 | {
6 | useBuiltIns: "usage",
7 | corejs: 3
8 | }
9 | ]
10 | ];
11 | const plugins = ['@babel/plugin-syntax-jsx']
12 | return { presets, plugins };
13 | };
--------------------------------------------------------------------------------
/legacy/webclient/assets/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Document
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/legacy/webclient/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom'
3 | import MainScreen from './MainScreen'
4 | import './theme.scss'
5 |
6 | function init () {
7 | ReactDOM.render(, document.getElementById('root'))
8 | }
9 |
10 | init()
11 |
--------------------------------------------------------------------------------
/legacy/webclient/src/theme.scss:
--------------------------------------------------------------------------------
1 | $theme-colors: (
2 | "primary": #30c5dc,
3 | "danger": #63f4c1
4 | );
5 |
6 |
7 | @import '~bootstrap/scss/bootstrap.scss';
8 |
9 | .btn-primary{
10 | color: #fafafa;
11 | }
12 |
--------------------------------------------------------------------------------
/legacy/webclient/src/worker/hashBenchmark.js:
--------------------------------------------------------------------------------
1 | import { runBenchmark } from '../../../../benchmark/hash'
2 | onmessage = function (event) {
3 | const { action, caller, size, enabled, includeIO } = event.data
4 | console.log(event.data)
5 | if (caller !== 'ONEWallet') {
6 | return
7 | }
8 | if (action === 'runBenchmark') {
9 | const subworkers = []
10 | for (let i = 0; i < navigator.hardwareConcurrency; i += 1) {
11 | subworkers.push(new Worker('sha256benchmarkWorker.js'))
12 | }
13 | runBenchmark({ size,
14 | enabled,
15 | includeIO,
16 | onUpdate: (key, time) => {
17 | postMessage({ key, time })
18 | },
19 | workers: subworkers })
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/legacy/webclient/src/worker/oneWalletWorker.js:
--------------------------------------------------------------------------------
1 | const { generateWallet } = require('../../../lib/wallet')
2 |
3 | onmessage = function (event) {
4 | const { otpSeed, merkleTreeDepth, otpInterval, effectiveTime } = event.data
5 | if (!otpSeed) {
6 | // console.log('worker: received event but it has no valid data', event)
7 | return
8 | }
9 | console.log('worker: generating wallet:', event.data)
10 | console.log(wallet)
11 | const wallet = generateWallet(
12 | otpSeed, merkleTreeDepth, otpInterval, effectiveTime,
13 | (current, total) => {
14 | postMessage({ status: 'working', current: current, total: total })
15 | })
16 | console.log('worker: done')
17 | postMessage({ status: 'done', wallet })
18 | }
19 |
--------------------------------------------------------------------------------
/legacy/webclient/src/worker/sha256benchmarkWorker.js:
--------------------------------------------------------------------------------
1 | import sha256 from 'fast-sha256'
2 |
3 | onmessage = function (event) {
4 | const { id, beginIndex, endIndex, workerData, workerResult } = event.data
5 | // console.log(id, 'received', endIndex - beginIndex)
6 | const decoder = new TextDecoder()
7 | const workerDataView = new Uint8Array(workerData)
8 | const workerResultView = new Uint8Array(workerResult)
9 | for (let i = 0; i < endIndex - beginIndex; i += 1) {
10 | const a = workerDataView.subarray(i * 32, i * 32 + 32)
11 | const r = sha256(a)
12 | const r2 = sha256(r)
13 | workerResultView.set(r2, i * 32)
14 | }
15 | postMessage({ id, workerData, workerResult }, [workerData, workerResult])
16 | }
17 |
--------------------------------------------------------------------------------
/opendev/README.md:
--------------------------------------------------------------------------------
1 | ## Open Development
2 |
3 | This folder contains the record of time spent by each contributor and what they have been working on during each time period.
4 |
5 | Folder names are the id of the contributor. Filenames follow the pattern of `m_dd_yyyy-m_dd_yyyy`. For example, `5_1_2021-5_28_2021` indicates the time period between May 1, 2021 and May 28, 2021.
6 |
7 |
--------------------------------------------------------------------------------
/opendev/brayooi/04_09_2022-05_06_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/brayooi/04_09_2022-05_06_2022.pdf
--------------------------------------------------------------------------------
/opendev/cylim/11_21_2021-1_1_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/cylim/11_21_2021-1_1_2022.pdf
--------------------------------------------------------------------------------
/opendev/darrlau/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/darrlau/.gitkeep
--------------------------------------------------------------------------------
/opendev/darrlau/darrlau-timesheet-1wallet.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/darrlau/darrlau-timesheet-1wallet.pdf
--------------------------------------------------------------------------------
/opendev/haolinj/1_8_2021-22_8_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/haolinj/1_8_2021-22_8_2021.pdf
--------------------------------------------------------------------------------
/opendev/haolinj/29_8_2021-20_09_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/haolinj/29_8_2021-20_09_2021.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/JW_10_23_2022-11_05_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/JW_10_23_2022-11_05_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/JW_11_06_2022-11_10_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/JW_11_06_2022-11_10_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_01_01_2023-01_06_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_01_01_2023-01_06_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_01_07_2023-01_13_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_01_07_2023-01_13_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_01_14_2023-01_27_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_01_14_2023-01_27_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_01_28_2023-02_03_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_01_28_2023-02_03_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_02_04_2023_02_10_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_02_04_2023_02_10_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_02_11_2023_02_16_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_02_11_2023_02_16_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_02_17_2023_03_01_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_02_17_2023_03_01_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_03_02_2023_03_05_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_03_02_2023_03_05_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_03_06_2022-03_19_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_03_06_2022-03_19_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_03_06_2023_03_17_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_03_06_2023_03_17_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_03_18_2023_03_23_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_03_18_2023_03_23_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_03_20_2022-04_02_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_03_20_2022-04_02_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_03_24_2023_03_31_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_03_24_2023_03_31_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_04_01_2023_04_07_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_04_01_2023_04_07_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_04_03_2022-04_16_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_04_03_2022-04_16_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_04_08_2023_04_12_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_04_08_2023_04_12_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_04_17_2022-04_30_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_04_17_2022-04_30_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_05_01_2022-05_21_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_05_01_2022-05_21_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_05_08_2023_05_25_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_05_08_2023_05_25_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_05_22_2022-05_28_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_05_22_2022-05_28_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_05_26_2023_05_29_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_05_26_2023_05_29_2023.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_06_05_2022-06_18_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_06_05_2022-06_18_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_06_19_2022-06_25_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_06_19_2022-06_25_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_06_26_2022-06_27_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_06_26_2022-06_27_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_06_26_2022-07_23_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_06_26_2022-07_23_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_07_24_2022-07_30_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_07_24_2022-07_30_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_07_31_2022-08_13_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_07_31_2022-08_13_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_08_14_2022-08_27_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_08_14_2022-08_27_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_08_28_2022-09-03_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_08_28_2022-09-03_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_09_04_2022-09-17_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_09_04_2022-09-17_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_09_18_2022-09_24_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_09_18_2022-09_24_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_11_11_2022-11_18_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_11_11_2022-11_18_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_11_19_2022-12_3_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_11_19_2022-12_3_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_12_04_2022-12_09_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_12_04_2022-12_09_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_12_10_2022-12_16_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_12_10_2022-12_16_2022.pdf
--------------------------------------------------------------------------------
/opendev/johnwhitton/jw_12_17_2022-12_30_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/johnwhitton/jw_12_17_2022-12_30_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/10_16_2021-11_26_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/10_16_2021-11_26_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/10_1_2022-11_4_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/10_1_2022-11_4_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/11_12_2022-11_18_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/11_12_2022-11_18_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/11_19_2022-11_25_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/11_19_2022-11_25_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/11_26_2022-12_2_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/11_26_2022-12_2_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/11_27_2021-3_4_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/11_27_2021-3_4_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/11_5_2022-11_11_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/11_5_2022-11_11_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/12_10_2022-12_16_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/12_10_2022-12_16_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/12_17_2022-12_24_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/12_17_2022-12_24_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/12_24_2022-12_30_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/12_24_2022-12_30_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/12_31_2022-1_28_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/12_31_2022-1_28_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/12_3_2022-12_9_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/12_3_2022-12_9_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/1_29_2023-2_24_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/1_29_2023-2_24_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/2_25_2023-3_31_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/2_25_2023-3_31_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/3_5_2022-4_29_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/3_5_2022-4_29_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/4_1_2023-4_28_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/4_1_2023-4_28_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/4_29_2023-5_12_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/4_29_2023-5_12_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/4_30_2022-7_22_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/4_30_2022-7_22_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/5_13_2023-5_26_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/5_13_2023-5_26_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/5_1_2021-5_28_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/5_1_2021-5_28_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/5_27_2023-6_9_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/5_27_2023-6_9_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/5_29_2021-6_18_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/5_29_2021-6_18_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/6_10_2023-6_30_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/6_10_2023-6_30_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/6_19_2021-7_16_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/6_19_2021-7_16_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/7_17_2021-8_13_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/7_17_2021-8_13_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/7_1_2023-8_4_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/7_1_2023-8_4_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/7_23_2022-9_2_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/7_23_2022-9_2_2022.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/8_14_2021-9_10_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/8_14_2021-9_10_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/8_5_2023-9_1_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/8_5_2023-9_1_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/9_11_2021-10_15_2021.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/9_11_2021-10_15_2021.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/9_2_2023-9_29_2023.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/9_2_2023-9_29_2023.pdf
--------------------------------------------------------------------------------
/opendev/polymorpher/9_3_2022-9_30_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/polymorpher/9_3_2022-9_30_2022.pdf
--------------------------------------------------------------------------------
/opendev/taoalpha/12_12_2021-1_1_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/taoalpha/12_12_2021-1_1_2022.pdf
--------------------------------------------------------------------------------
/opendev/taoalpha/18_04_2022-30_04_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/taoalpha/18_04_2022-30_04_2022.pdf
--------------------------------------------------------------------------------
/opendev/taoalpha/1_1_2022-31_1_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/taoalpha/1_1_2022-31_1_2022.pdf
--------------------------------------------------------------------------------
/opendev/taoalpha/1_2_2022-28_2_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/taoalpha/1_2_2022-28_2_2022.pdf
--------------------------------------------------------------------------------
/opendev/taoalpha/1_4_2022-17_4_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/taoalpha/1_4_2022-17_4_2022.pdf
--------------------------------------------------------------------------------
/opendev/taoalpha/2022-11-01_2022-12-01.md:
--------------------------------------------------------------------------------
1 | | Date | Start Time (24h) | End Time (24h) | Duration (Hours) | Week Subtotal | Notes |
2 | |------------|------------------|----------------|------------------|---------------|---------------------------------------------|
3 | | 2022-11-17 | 19:30 | 21:30 | 2 | | initial repo and client code for .1.country |
4 | | 2022-11-26 | 10:30 | 12:00 | 1.5 | | Chrome extension on TLD (`1`) redirection |
5 |
--------------------------------------------------------------------------------
/opendev/taoalpha/2022-12-11_2022-12-18.md:
--------------------------------------------------------------------------------
1 | | Date | Start Time (24h) | End Time (24h) | Duration (Hours) | Week Subtotal | Notes |
2 | |------------|------------------|----------------|------------------|---------------|---------------------------------------------|
3 | | 2022-12-16 | 18:00 | 19:30 | 1.5 | | help harmony people set up safari extension |
4 |
--------------------------------------------------------------------------------
/opendev/taoalpha/2022-12-18_2022-12-25.md:
--------------------------------------------------------------------------------
1 | | Date | Start Time (24h) | End Time (24h) | Duration (Hours) | Week Subtotal | Notes |
2 | |------------|------------------|----------------|------------------|---------------|---------------------------------------------------------|
3 | | 2022-12-21 | 18:00 | 19:00 | 1.0 | | Help safari build and fix edge cases on domain handling |
4 |
--------------------------------------------------------------------------------
/opendev/taoalpha/31_03_2022-01_03_2022.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/opendev/taoalpha/31_03_2022-01_03_2022.pdf
--------------------------------------------------------------------------------
/scripts/README.md:
--------------------------------------------------------------------------------
1 | Script to fix a bug with Harmony TruffleProvider. Needed until a new version (0.1.58) of Harmony JS SDK is released with https://github.com/harmony-one/sdk/pull/84/files included.
2 |
3 | To patch, first finish all `npm install` or `yarn install` in subprojects. Then go to root folder and run `./patch/patch.sh`
4 |
--------------------------------------------------------------------------------
/scripts/patch.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | cp scripts/hdnode.js ./code/node_modules/@harmony-js/account/dist/hdnode.js
4 | cp scripts/hdnode.js ./code/relayer/node_modules/@harmony-js/account/dist/hdnode.js
5 |
--------------------------------------------------------------------------------
/scripts/reinstall.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | rm -Rf code/node_modules
3 | rm -Rf code/client/node_modules
4 | rm -Rf code/relayer/node_modules
5 | rm -Rf benchmark/node_modules
6 | rm -Rf legacy/node_modules
7 | rm -Rf legacy/webclient/node_modules
8 | rm -Rf SmartOTP/node_modules
9 |
10 | cd code; yarn install
11 | cd relayer; yarn install; cd ..;
12 | cd client; yarn install; cd ..;
13 | cd ..
14 |
15 | cd benchmark; yarn install; cd ..;
16 | cd smartotp; yarn install; cd ..;
17 |
18 | cd legacy; yarn install; cd ..;
19 | cd webclient; yarn install; cd ..;
20 | cd ..
21 |
22 | cp scripts/hdnode.js ./smartotp/node_modules/@harmony-js/account/dist/hdnode.js
23 | ./scripts/patch.sh
24 |
25 |
--------------------------------------------------------------------------------
/scripts/setup.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | cd code; yarn install
4 | cd relayer; yarn install; cd ..;
5 | cd client; yarn install; cd ..;
6 | cd ..
7 |
8 | ./scripts/patch.sh
9 |
10 |
--------------------------------------------------------------------------------
/smartotp/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env",
5 | {
6 | "useBuiltIns": "entry"
7 | }
8 | ]
9 | ]
10 | }
--------------------------------------------------------------------------------
/smartotp/.envSample:
--------------------------------------------------------------------------------
1 | # test net
2 | PRIVATE_KEY='0x...'
3 | URL='https://api.s0.b.hmny.io'
4 | # OWNER_ADDR should be corresponding to PRIVATE_KEY
5 | OWNER_ADDR="<...>"
6 | LAST_RESORT_ADDR="<...>"
7 |
8 | # main net
9 | MAIN_PRIVATE_KEY="0x..."
10 | MAIN_URL="https://api.s0.t.hmny.io"
11 |
12 | # local - accounts corresponding to the first 4 private keys must have funds
13 | LOCAL_PRIVATE_KEYS=',,...'
14 | LOCAL_URL='http://localhost:9500'
15 |
16 |
17 | GAS_LIMIT=67219000
18 | GAS_PRICE=10000000
19 |
--------------------------------------------------------------------------------
/smartotp/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "es2020": true,
4 | "browser": true,
5 | "jest": true,
6 | "truffle/globals": true
7 | },
8 | "extends": [
9 | "standard"
10 | ],
11 | "globals": {
12 | "artifacts": "readonly",
13 | "contract": "readonly",
14 | "assert": "readonly",
15 | "web3": "readonly"
16 | },
17 | "parser": "babel-eslint",
18 | "rules": {
19 | "no-await-in-loop": 0,
20 | "no-underscore-dangle": 0,
21 | "import/prefer-default-export": 0,
22 | "import/no-extraneous-dependencies": 1,
23 | "comma-dangle": 0,
24 | "no-console": 0,
25 | "no-mixed-operators": 0,
26 | "max-len": 0
27 | },
28 | "plugins": [
29 | "truffle"
30 | ],
31 | "settings": {
32 | "import/resolver": "webpack",
33 | "react": {
34 | "version": "latest"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/smartotp/.gitignore:
--------------------------------------------------------------------------------
1 | /bin
2 | /build
3 | /app/dist
4 | /app/node_modules
5 | /node_modules
6 | npm-debug.log
7 |
8 | .env
9 |
--------------------------------------------------------------------------------
/smartotp/common.js:
--------------------------------------------------------------------------------
1 | require('dotenv').config()
2 | const localUrl = process.env.LOCAL_URL
3 | const localPrivateKeys = process.env.LOCAL_PRIVATE_KEYS
4 |
5 | // const mnemonic = process.env.MNEMONIC
6 | const privateKeys = process.env.PRIVATE_KEYS
7 | const url = process.env.URL
8 |
9 | // const mainMnemonic = process.env.MAIN_MNEMONIC
10 | const mainPrivateKeys = process.env.MAIN_PRIVATE_KEYS
11 | const mainUrl = process.env.MAIN_URL
12 |
13 | module.exports = {
14 | networkId: {
15 | Mainnet: 1,
16 | Testnet: 2,
17 | Local: 2,
18 | },
19 | gas: {
20 | gasLimit: parseInt(process.env.GAS_LIMIT),
21 | gasPrice: parseInt(process.env.GAS_PRICE)
22 | },
23 | local: {
24 | url: localUrl,
25 | privateKeys: localPrivateKeys,
26 | },
27 | test: {
28 | // mnemonic,
29 | privateKeys,
30 | url,
31 | },
32 | main: {
33 | // mnemonic: mainMnemonic,
34 | privateKeys: mainPrivateKeys,
35 | url: mainUrl
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/smartotp/contracts/Migrations.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.5.8;
2 |
3 | contract Migrations {
4 | address public owner;
5 | uint public last_completed_migration;
6 |
7 | modifier restricted() {
8 | if (msg.sender == owner) _;
9 | }
10 |
11 | constructor() public {
12 | owner = msg.sender;
13 | }
14 |
15 | function setCompleted(uint completed) public restricted {
16 | last_completed_migration = completed;
17 | }
18 |
19 | function upgrade(address new_address) public restricted {
20 | Migrations upgraded = Migrations(new_address);
21 | upgraded.setCompleted(last_completed_migration);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/smartotp/lib/auth_config.js:
--------------------------------------------------------------------------------
1 | const AuthConfig = Object.freeze({
2 | PARENT_NUMBER_OF_LEAFS: Math.pow(2, 4),
3 | CHILD_NUMBER_OF_LEAFS: Math.pow(2, 3),
4 | CHILD_DEPTH_OF_CACHED_LAYER: 0,
5 | HASH_CHAIN_LEN: 2,
6 | MNEM_WORDS: 'child senior sister dance clarify donor segment arrest ride snack lab twin' // Seed of authenticator
7 | })
8 |
9 | module.exports = AuthConfig
10 |
--------------------------------------------------------------------------------
/smartotp/migrations/1_initial_migration.js:
--------------------------------------------------------------------------------
1 | const Migrations = artifacts.require('Migrations')
2 |
3 | module.exports = function (deployer) {
4 | deployer.deploy(Migrations)
5 | }
6 |
--------------------------------------------------------------------------------
/wiki/images/auth-connect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/auth-connect.png
--------------------------------------------------------------------------------
/wiki/images/auth-pay-any-wallet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/auth-pay-any-wallet.png
--------------------------------------------------------------------------------
/wiki/images/auth-pay-bad-address.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/auth-pay-bad-address.png
--------------------------------------------------------------------------------
/wiki/images/auth-pay-specific-address-next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/auth-pay-specific-address-next.png
--------------------------------------------------------------------------------
/wiki/images/auth-pay-specific-address.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/auth-pay-specific-address.png
--------------------------------------------------------------------------------
/wiki/images/call-confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/call-confirm.png
--------------------------------------------------------------------------------
/wiki/images/call.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/call.png
--------------------------------------------------------------------------------
/wiki/images/sign-confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/sign-confirm.png
--------------------------------------------------------------------------------
/wiki/images/sign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/images/sign.png
--------------------------------------------------------------------------------
/wiki/protocol.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/protocol.pdf
--------------------------------------------------------------------------------
/wiki/updates/v16.3/contacts.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/contacts.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/customize-wallet-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/customize-wallet-2.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/customize-wallet.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/customize-wallet.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/iOS-app.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/iOS-app.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/iOS-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/iOS-app.png
--------------------------------------------------------------------------------
/wiki/updates/v16.3/iOS-install.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/iOS-install.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/ios-app-post-install.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/ios-app-post-install.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/macOS-app.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/macOS-app.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/macOS-install.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/macOS-install.jpg
--------------------------------------------------------------------------------
/wiki/updates/v16.3/nft-rescue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polymorpher/one-wallet/16050d22e25b2c87d217732c36448691423bc74d/wiki/updates/v16.3/nft-rescue.jpg
--------------------------------------------------------------------------------