UNPKG

@swtc/wallet

Version:
3 lines (2 loc) 3.66 kB
import{funcGetChain as e,ACCOUNT_ID_ZERO as r,ACCOUNT_ID_ONE as t}from"@swtc/common";import{Factory as s}from"@swtc/keypairs";const i=(i="jingtum")=>{var n;let c;const u=s(i),a=u.addressCodec,o="jingtum",y=10;if("string"==typeof i){const r=e(i);if(!r)throw new Error("the chain you specified is not registered");c=r}else c=i;return c.code=(c.code||o).toLowerCase(),c.currency=u.token,c.fee=c.fee||y,c.guomi=u.guomi,c.ACCOUNT_ALPHABET=u.addressCodec.codec.alphabet,c.ACCOUNT_ZERO=a.encodeAccountID(Buffer.from(Buffer.from(r,"hex").toJSON().data)),c.ACCOUNT_ONE=a.encodeAccountID(Buffer.from(Buffer.from(t,"hex").toJSON().data)),c.ACCOUNT_GENESIS=u.deriveAddress(u.deriveKeypair(a.encodeSeed(Buffer.from(u.seedFromPhrase("masterpassphrase")))).publicKey),c.issuer=c.issuer||c.ACCOUNT_GENESIS,c.CURRENCIES=c.CURRENCIES||{},c.XLIB=c.XLIB||{},(n=class{static getCurrency(){return n.config.currency||"SWT"}static getCurrencies(){return n.config.CURRENCIES||{}}static getChain(){return n.config.code||"jingtum"}static getFee(){return n.config.fee||10}static getAccountZero(){return n.config.ACCOUNT_ZERO}static getAccountOne(){return n.config.ACCOUNT_ONE}static getIssuer(){return n.config.issuer||"shouldnotfalltothisdefault"}static makeCurrency(e=n.getCurrency(),r=n.getIssuer()){const t=n.getCurrencies();return e=e.toUpperCase(),(e=t.hasOwnProperty(e)?t[e]:e)===n.getCurrency()?{currency:e,issuer:""}:{currency:e,issuer:r}}static makeAmount(e=1,r=n.getCurrency(),t=n.getIssuer()){return"object"==typeof r?Object.assign({},r,{value:`${e}`}):Object.assign({},this.makeCurrency(r,t),{value:`${e}`})}static generate(e={}){const r=u.generateSeed(e),t=u.deriveKeyPair(r);return{secret:r,address:u.deriveAddress(t.publicKey)}}static fromPhrase(e,r=(n.guomi?"sm2p256v1":"secp256k1")){return n.fromSecret(a.encodeSeed(Buffer.from(u.seedFromPhrase(e)),r),r)}static fromSecret(e,r=(n.guomi?"sm2p256v1":"secp256k1")){try{let t=e;const s=u.deriveKeyPair(e,r),i=u.deriveAddress(s.publicKey);if(/^s/.test(e))t=e;else{if(!(e.length>=64))throw new Error("use secret or private key to get wallet");t="privatekey"}return{secret:t,address:i}}catch(e){return null}}static isValidAddress(e){return u.isValidAddress(e)}static isValidSecret(e){try{u.deriveKeyPair(e)}catch(e){return!1}return!0}static checkTx(e,r,t){return u.verifyTx(e,r,t)}constructor(e,r="secp256k1"){try{if(this._keypairs=u.deriveKeyPair(e,r),"string"!=typeof e)throw new Error("use secret or private key to instantiate wallet");if(/^s/.test(e))this._secret=e;else{if(!(e.length>=64))throw new Error("use secret or private key to instantiate wallet");this._secret="privatekey"}}catch(e){this._keypairs=null,this._secret=null}}address(){if(!this._keypairs)return null;return u.deriveAddress(this._keypairs.publicKey)}secret(){return this._keypairs?this._secret:null}isEd25519(){return!!this._keypairs&&"ED"===this._keypairs.privateKey.slice(0,2).toUpperCase()}toJson(){return this._keypairs?{secret:this.secret(),address:this.address()}:null}getPublicKey(){return this._keypairs?this._keypairs.publicKey:null}sign(e){if(!e)return null;if(!this._keypairs)return null;const r=this._keypairs.privateKey;return u.sign(e,r)}verify(e,r){if(!this._keypairs)return!1;const t=this.getPublicKey();return u.verify(e,r,t)}signTx(e){if(!e)return null;if(!this._keypairs)return null;const r=this._keypairs.privateKey;return u.signTx(e,r)}verifyTx(e,r){if(!this._keypairs)return!1;const t=this.getPublicKey();return u.verifyTx(e,r,t)}}).config=c,n.token=c.currency,n.chain=c.code,n.KeyPair=u,n.hash=u.hash,n.guomi=c.guomi,n},n=i("jingtum"),c=n.KeyPair;export{i as Factory,c as KeyPair,n as Wallet}; //# sourceMappingURL=index.js.map