├── .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 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/ag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/aw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /code/client/assets/flags/az.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/ba.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /code/client/assets/flags/bb.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of Barbados 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /code/client/assets/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/bh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/bj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/bv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/ca.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/cf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /code/client/assets/flags/cm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /code/client/assets/flags/cn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /code/client/assets/flags/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/cu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/cw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/client/assets/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/de.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of Germany 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/eh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /code/client/assets/flags/et.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/client/assets/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/fm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/client/assets/flags/fo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /code/client/assets/flags/fr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /code/client/assets/flags/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of The Gambia 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/gr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/gw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /code/client/assets/flags/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/il.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /code/client/assets/flags/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/jo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/km.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /code/client/assets/flags/kn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/kp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/client/assets/flags/kr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/lr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /code/client/assets/flags/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/ly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/mh.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of the Marshall Islands 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /code/client/assets/flags/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/mm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /code/client/assets/flags/mq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/mw.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of Malawi 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /code/client/assets/flags/na.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/nr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/nu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/pa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /code/client/assets/flags/pk.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of Pakistan 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/pr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/ps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/qa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/rw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /code/client/assets/flags/sb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /code/client/assets/flags/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/sh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /code/client/assets/flags/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /code/client/assets/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/ss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/st.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/client/assets/flags/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /code/client/assets/flags/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/tf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /code/client/assets/flags/tg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/client/assets/flags/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/tl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/assets/flags/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /code/client/assets/flags/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /code/client/assets/flags/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/tw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /code/client/assets/flags/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /code/client/assets/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /code/client/assets/flags/um.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /code/client/assets/flags/us.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /code/client/assets/flags/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /code/client/assets/flags/ve.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /code/client/assets/flags/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /code/client/assets/flags/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /code/client/assets/flags/ws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /code/client/assets/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /code/client/assets/flags/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | bi -------------------------------------------------------------------------------- /code/client/src/assets/busd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/client/src/assets/icons/nft.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 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 | tether-usdt-logo -------------------------------------------------------------------------------- /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 --------------------------------------------------------------------------------