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 e{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}}static getCurrency(){return e.config.currency||"SWT"}static getCurrencies(){return e.config.CURRENCIES||{}}static getChain(){return e.config.code||"jingtum"}static getFee(){return e.config.fee||10}static getAccountZero(){return e.config.ACCOUNT_ZERO}static getAccountOne(){return e.config.ACCOUNT_ONE}static getIssuer(){return e.config.issuer||"shouldnotfalltothisdefault"}static makeCurrency(r=e.getCurrency(),t=e.getIssuer()){const s=e.getCurrencies();return r=r.toUpperCase(),(r=s.hasOwnProperty(r)?s[r]:r)===e.getCurrency()?{currency:r,issuer:""}:{currency:r,issuer:t}}static makeAmount(r=1,t=e.getCurrency(),s=e.getIssuer()){return"object"==typeof t?Object.assign({},t,{value:""+r}):Object.assign({},this.makeCurrency(t,s),{value:""+r})}static generate(e={}){const r=u.generateSeed(e),t=u.deriveKeyPair(r);return{secret:r,address:u.deriveAddress(t.publicKey)}}static fromPhrase(r,t=(e.guomi?"sm2p256v1":"secp256k1")){return e.fromSecret(a.encodeSeed(Buffer.from(u.seedFromPhrase(r)),t),t)}static fromSecret(r,t=(e.guomi?"sm2p256v1":"secp256k1")){try{let e=r;const s=u.deriveKeyPair(r,t),i=u.deriveAddress(s.publicKey);if(/^s/.test(r))e=r;else{if(!(r.length>=64))throw new Error("use secret or private key to get wallet");e="privatekey"}return{secret:e,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)}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