gamegold 5.7.3 → 5.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/gamegold-worker.js +2 -2
- package/lib/gamegold.js +3 -3
- package/package.json +1 -1
package/lib/gamegold-worker.js
CHANGED
|
@@ -201,7 +201,7 @@ let r=[];[i(558),i(559),i(560),i(561),i(562),i(563),i(564),i(565),i(566),i(567),
|
|
|
201
201
|
* pkg.js - package constants
|
|
202
202
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
203
203
|
* https://github.com/bookmansoft/gamegold
|
|
204
|
-
*/t.protocol="vallnet",t.version="5.7.
|
|
204
|
+
*/t.protocol="vallnet",t.version="5.7.5",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
|
|
205
205
|
/*!
|
|
206
206
|
* common.js - p2p constants for vallnet
|
|
207
207
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
@@ -437,7 +437,7 @@ const r=i(5).ContractType;e.exports=function(e){if(!e)return i(188);switch(e.ope
|
|
|
437
437
|
/*!
|
|
438
438
|
* mappedlock.js - lock and queue for vallnet
|
|
439
439
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
440
|
-
*/function r(e,t){this.resolve=e,this.reject=t}function a(){}e.exports=class{constructor(){this.jobs=new Map,this.busy=new Set,this.destroyed=!1}has(e){return this.busy.has(e)}hasPending(e){return this.jobs.has(e)}lock(e,t){return this.destroyed?Promise.reject(new Error("Lock is destroyed.")):null==e||t?Promise.resolve(a):this.busy.has(e)?new Promise((t,i)=>{this.jobs.has(e)||this.jobs.set(e,[]),this.jobs.get(e).push(new r(t,i))}):(this.busy.add(e),Promise.resolve(this.unlock(e)))}unlock(e){const t=this;return function i(){var r,a;!t.destroyed&&t.busy.has(e)&&(t.busy.delete(e),r=t.jobs.get(e))&&(0===r.length&&t.jobs.delete(e),a=r.shift(),0===r.length&&t.jobs.delete(e),t.busy.add(e),a.resolve(i))}}destroy(){if(!this.destroyed){this.destroyed=!0;var e=this.jobs;this.busy=new Map,this.jobs=new Map;for(const t of e.values())for(const e of t)e.reject(new Error("MappedLock was destroyed."))}}}},function(e,t,i){var r=i(14);const a=i(5).ContractEnvType,s=i(37).VerifyError,n=i(151).scItem,o=i(72).verifyData,c=i(0),u=i(44).broadcast;e.exports=class extends r{async confirm(){var e,t;this.mode==a.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,this.data.indate?this.data.indate=this.data.height+Math.max(144,Math.min(52560,this.data.indate)):this.data.indate=this.data.height+4320,t=new n({type:this.data.type,addr:this.data.addr,dst:this.data.dst,height:this.data.height,state:1,ver:1,indate:this.data.indate}),this.data.cls&&(t.options.cls=this.data.cls,this.mode===a.Block)&&"publish"==this.data.cls&&u("sc/publish",t.options),t.do(),await e.scList.addItem(t))}async unconfirm(){this.mode==a.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e8!=i.value||!this.data)throw new s(t,"invalid","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0<e.scList.query([["options.dst",this.data.dst]]).length)throw new s(t,"Contract Register Conflict","another contract already on "+this.data.dst,100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new s(t,"Invalid Smart Contract","Receive address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractState:s}=i(5),n=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==a.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.ver+=1,t.list[0].options.type=this.data.type,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==a.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new n(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new n(t,"Contract Not Exists","contract not exists",100);if(e.list[0].options.state!=s.Normal)throw new n(t,"Contract State Error","contract state error",100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new n(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractState:s}=i(5),n=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==a.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.state=this.data.state,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==a.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new n(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new n(t,"Contract Not Exists","contract not exists",100);switch(e.list[0].options.state){case s.Normal:if(this.data.state!=s.Frozen&&this.data.state!=s.Destroy)throw new n(t,"Contract State Error","contract state error",100);break;case s.Frozen:if(this.data.state!=s.Normal&&this.data.state!=s.Destroy)throw new n(t,"Contract State Error","contract state error",100);break;default:throw new n(t,"Contract State Error","contract state error",100)}if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new n(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractState:s}=i(5),n=i(37).VerifyError,o=i(7),c=i(152),u=i(42);e.exports=class extends r{async onPacking(){var e=this.options.env,t=this.options.tx.hash("hex"),i=await e.node.cdb.get("primary"),r=this.data.$top;let a={derive:[]};var s=await i.getStatusOfSC(t);if(s.txs)for(var n of s.txs)(n=await i.getTX(n))&&a.derive.push(n.tx);else if((s=await this.getContract())&&(s={height:e.curHeight,data:this.data,tx:this.options.tx,contract:s,wallet:i},s=c(s)))if((a=await s.run()).derive&&a.derive.length<o.MAX_PACKING_SIZE){let s=[];for(var h of a.derive)if((h=await(await u.FactoryOfContract({tx:h,env:e})).onPacking()).derive){if(!(a.derive.length+s.length+h.derive.length<o.MAX_PACKING_SIZE))break;s=s.concat(h.derive)}a.derive=a.derive.concat(s),r||await i.setStatusOfSC(t,a.derive.map(e=>e.hash("hex")))}else a.derive=[];return a}async confirm(){var e,t,i;if(this.mode==a.Block)return e=this.options.env,(t=await this.getContract())&&(i=c({data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")}))&&(t.do(),await e.scList.addItem(t),await i.confirm()),!0}async unconfirm(){var e,t,i;if(this.mode==a.Block)return e=this.options.env,(t=await this.getContract())&&(i={data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")},i=c(i))&&(t.undo(),await e.scList.addItem(t),await i.unconfirm()),!0}async verify(){var e=this.options.env,t=this.options.tx,i=await this.getContract();if(!i)throw new n(t,"invalid","contract not found",100);if(i.options.state!=s.Normal)throw new n(t,"invalid","contract version conflict",100);if(this.data.params.ver&&this.data.params.ver!=i.options.ver)throw new n(t,"invalid","contract version conflict",100);if(i.options.indate<e.curHeight)throw new n(t,"invalid","contract expired",100);return t={data:this.data,tx:t,contract:i,wallet:await e.node.cdb.get("primary")},(i=c(t))?i.verify():"scRun.errorType"}async getContract(){if(0<this.options.tx.outputs.length){var e=this.options.tx.outputs[1].getAddress().toString();if((e=await this.options.env.node.chain.db.getSCList([["options.dst",e]]))&&0<e.list.length)return e.list[0]}return null}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){var e,t,i,r,a,s;return await this.verify()?(e=await super.run(),t=this.options.contract.options.addr,i=this.options.tx.outputs[1].value,r=this.options.wallet,s=this.options.data.params.relay,a=this.options.data.$top||0,s=await r.send({sendafter:!(r=[]),subtractFee:!1,sort:!1,outputs:[{address:s,value:i}],comment:JSON.stringify({$tag:"inner",$top:a+1,oper:"scrun",hash:this.options.tx.hash("hex"),account:t,params:this.options.data.params.params})},t),r.push(s),e.derive=r,e):{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,a=this.options.contract.options.addr;let s=this.options.data.params.sim;s||(s=(n=this.options.tx.inputs[0]).getAddress().toString());var n=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:s,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:n+1,hash:this.options.tx.hash("hex"),account:a})},a);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,a=this.options.contract.options.addr;let s=this.options.data.params.sim;s||(s=(n=this.options.tx.inputs[0]).getAddress().toString());var n=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:s,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:n+1,hash:this.options.tx.hash("hex"),account:a})},a);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){return await this.verify()?await super.run():{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[];let i=this.options.contract;var r=this.options.data.params.oper,a=this.options.wallet,s=i.options.addr;switch(r){case"pubk":{var n,o,c,u=this.options.data.params.addr,h=this.options.data.params.pubk,l=this.options.data.params.partner;"object"==typeof i.options.contacts&&!Array.isArray(i.options.contacts)||(i.options.contacts={}),l&&l.split(",").map(e=>{i.options.contacts[e]||(i.options.contacts[e]={st:0})});let e="";for(n of Object.keys(i.options.contacts))u!=n&&(o=i.options.contacts[n],c=await a.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:n,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:h,m:i.options.m,n:i.options.n,contract:i.options.dst,account:s})},s),t.push(c),o.pubk)&&(e&&(e+=","),e+=o.pubk);e&&(l=await a.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:u,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:e,contract:i.options.dst,account:s})},s),t.push(l)),i.options.contacts[u]?i.options.contacts[u].pubk||(i.options.contacts[u].pubk=h):i.options.contacts[u]={pubk:h,st:0};break}case"puba":{var p,d=this.options.data.params.addr,f=this.options.data.params.puba;let e=!0;for(p of(i.options.puba=i.options.puba||f,Object.keys(i.options.contacts))){var m=i.options.contacts[p];p==d&&i.options.puba==f&&(m.st=1),1!=m.st&&(e=!1)}i.options.status=e;break}case"sign":if(1==i.options.status){var g,v,y=this.options.data.params.addr;for(g of Object.keys(i.options.contacts))g!=y&&(v=await a.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:g,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendtx",$tag:"inner",hash:this.options.tx.hash("hex"),data:this.options.data.params.tx,contract:i.options.dst,account:s})},s),t.push(v))}break;default:return e}return e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){var r=i(14);const a=i(5).ContractEnvType,s=i(44).broadcast;e.exports=class extends r{async confirm(){var e;this.mode==a.Wallet&&(e=this.options.tx.outputs[1])&&(this.data.addr=e.getAddress().toString(),this.options.env.emit(this.data.type+"/receive",this.data),s(this.data.type+"/receive",this.data))}async verify(){return!0}}},function(e,t,i){const r=i(0);var a=i(14);const{ContractEnvType:s,PropStatus:n}=i(5);e.exports=class extends a{async confirm(){var e=this.options.env,t=await e.propList.getVp(this.data.ori.pid);return t&&(t.pst=n.Delete,await e.propList.setVp(t),e.mode==s.Block)&&(t={pid:t.pid},e.node.transmit("prop.found",t)),!0}async unconfirm(){var e=this.options.env,t=this.options.tx,i=await e.propList.getVp(this.data.ori.pid);return i&&i.current.hash==t.inputs[0].prevout.hash&&i.current.index==t.inputs[0].prevout.index&&(i.pst=n.Ready,await e.propList.setVp(i)),!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data;return i.ori&&i.ori.pid?e.network.tokenReg.test(i.ori.pid)?"propfound.protected":(e=await e.propList.getVp(i.ori.pid))&&e.pst==n.Ready?(r.strictEqual(e.current.hash,t.inputs[0].prevout.hash),r.strictEqual(e.current.index,t.inputs[0].prevout.index),!0):"propfound.invalidStatus":"propfound.invalidAncestor"}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractType:s}=i(5),n=i(7),o=i(19).opcodes;e.exports=class extends r{async confirm(){return this.options.env,this.options.tx.hash("hex"),this.mode===a.Block&&await this.HandleVoteTrans(!1),!0}async unconfirm(){return this.options.env,this.options.tx,this.mode===a.Block&&await this.HandleVoteTrans(!0),!0}async HandleVoteTrans(e){var t=this.options.env,i=this.options.tx,r=this.options.tx.outputs[0].script.code;if(r[0].value==o.OP_RETURN)try{var a=JSON.parse(Buffer.from(r[1].data).toString());if(a&&a.oper==s.vote)switch(a.type){case"mine":{let r=0;for(var c of i.inputs){var u,h=await t.getExtendTX(c.prevout.hash);h&&t.voteMgr.isIn(h.height)?(u=h.tx.outputs[c.prevout.index])&&u.value?r+=u.value/n.COIN|0:t.logger.warning("Voting: Invalid UTXO Info"):t.logger.warning("Voting: Invalid UTXO Height")}0<r&&await t.voteMgr.calcVote(r,a.ca,e);break}case"oracle":{let r=0;for(var l of i.inputs){var p,d=await t.getExtendTX(l.prevout.hash);d&&t.voteMgr.isIn(d.height)?(p=d.tx.outputs[l.prevout.index])&&p.value?r+=p.value/1e5|0:t.logger.warning("Oracle: Invalid UTXO Info"):t.logger.warning("Oracle: Invalid UTXO Height")}0<r&&await t.voteMgr.calcOracle(r,{k:a.k,v:a.v},e);break}}}catch(r){console.log(r)}}async verify(){return!0}}},function(e,t,i){const r=i(0);var a=i(14);const{BlockFinalType:s,ContractEnvType:n,ContractType:o,PropStatus:c}=i(5),u=i(37).VerifyError,h=i(7);var{}=i(44);i(2);const l=i(31);e.exports=class extends a{async insert(){var e=this.options.env,t=this.options.tx,i=2<t.outputs.length?t.outputs[2].getReturnData():null,a=await e.propList.getVp(this.data.pid);if(a){if(i){if(this.mode==n.Wallet&&a.bid&&(i=await e.getTX(a.bid.hash))&&(i=await e.getWalletsByTX(i)))for(const t of i){var s=await e.get(t);r(s),await s.remove(a.bid.hash)}i=t.outputs[1].value;var o=t.outputs[2].getAddress().toString();i>=this.data.fixed||e.curHeight>=this.data.period&&i>a.gold?(a.pst=c.Sale,a.bid={},a.bid.raw=this.options.raw,a.bid.fixed=this.data.fixed,a.bid.period=this.data.period,a.bid.hash=this.options.hash,a.bid.value=i,a.bid.address=o,await e.propList.setVp(a,t)):(a.pst=c.Sale,a.bid={},a.bid.raw=this.options.raw,a.bid.fixed=this.data.fixed,a.bid.period=this.data.period,a.bid.hash=this.options.hash,a.bid.value=i,a.bid.address=o,await e.propList.setVp(a))}else a.pst=c.Sale,a.bid={},a.bid.raw=this.options.raw,a.bid.fixed=this.data.fixed,a.bid.period=this.data.period,a.bid.hash=this.options.hash,a.bid.value=a.gold,a.bid.address="",await e.propList.setVp(a);this.mode==n.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(a.pid,Object.assign({pid:a.pid,curAddress:a.current.address,curGold:a.gold,status:c.Sale},a.bid)))}return!0}async erase(){var e=this.options.env,t=2<(i=this.options.tx).outputs.length?i.outputs[2].getReturnData():null,i=i.inputs[0],r=await e.propList.getVp(this.data.pid);r&&(t?(t=await e.getExtendTX(i.prevout.hash))&&(t.tx.outputs[i.prevout.index],r.bid={hash:this.options.hash,value:r.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},r.pst=c.Sale,await e.propList.setVp(r,t.tx),this.mode==n.Mempool)&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(r.pid,Object.assign({pid:r.pid,curAddress:r.current.address,curGold:r.gold,status:c.Sale},r.bid))):(r.pst=c.Ready,await e.propList.setVp(r),this.mode==n.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(r.pid))))}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=t.outputs[2].getAddress().toString(),a=await e.propList.getVp(this.data.pid);return a&&(this.mode==n.Block&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(a.pid),e.node.transmit("prop.bid",{status:c.Ready,pid:a.pid,bid:Object.assign({},a.bid),height:this.options.coinbaseHeight})),a.current={hash:i,index:2,address:r},a.height=this.options.coinbaseHeight,a.pst=c.Ready,await e.propList.setVp(a,t)),!0}async unconfirm(){var e,t,i=this.options.env,r=this.options.tx,a=r.inputs[0].prevout,s=await i.getExtendTX(a.hash);return s?(t=(e=s.tx.outputs[a.index]).getReturnData(),(t=await i.propList.getVp(t.pid))&&(t.current={hash:a.hash,index:a.index,address:e.getAddress().toString()},t.height=s.height-1,await i.propList.setVp(t,r)),this.mode==n.Block&&i.node.transmit("prop.bid",{status:c.Delete,pid:t.pid,address:t.current.address,time:this.options.block.time,height:t.height})):this.mode==n.Wallet&&(a=await i.propList.getVp(this.data.pid),await i.propList.delVp(a)),!0}async verify(){var e=this.data,t=this.options.env,i=this.options.tx,a=2<i.outputs.length?i.outputs[2].getReturnData():null,s=await t.propList.getVp(e.pid);if(!s)return"propsale.notExist";switch(this.mode){case n.Mempool:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(t.curHeight+h.BLOCK_DAY>=this.data.period),r(e.cid!=t.network.genesisId),a&&(r.strictEqual(a.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(a.prev.index,i.inputs[0].prevout.index),r.strictEqual(a.pid,e.pid),r.strictEqual(a.oper,o.propExchange),s.bid)){if(s.period<t.curHeight)throw new u(i,"sale order expired","contract",0);if(s.bid.value>=this.data.fixed)throw new u(i,"can not bid on sale order finished","contract",0);if(i.outputs[1].value<=s.bid.value||i.outputs[1].value<=s.gold)throw new u(i,"invalid bid price","contract",0);var c=await t.getTX(s.bid.hash);c&&await t.removeDoubleSpenders(c)}break;case n.Block:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(e.cid!=t.network.genesisId),r.strictEqual(a.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(a.prev.index,i.inputs[0].prevout.index),r.strictEqual(a.pid,e.pid),r.strictEqual(a.oper,o.propExchange),i.outputs[1].value<=s.gold)throw new u(i,"invalid bid price","contract",0)}return!0}isBlockFinal(){var e=this.options.env,t=this.options.tx;return this.data.period<e.curHeight?s.Expired:2<=t.outputs.length&&(t.outputs[1].value>=this.data.fixed||this.data.period==e.curHeight&&t.outputs[1].value>=t.outputs[2].value)?s.Final:s.Waiting}isPreVerify(){var e=this.options.tx;return!!(2<e.outputs.length&&e.outputs[2].getReturnData())}}},function(e,t,i){const r=i(0),a=i(107),{ContractEnvType:s,BlockFinalType:n}=i(5);var o=i(14);const c=i(7),u=i(44).broadcast,h=i(6),l=i(13);e.exports=class extends o{async insert(){var e=this.options.env,t=this.options.tx;switch(this.data.body.dst=t.outputs[1].getAddress().toString(),this.mode){case s.Mempool:try{var i=JSON.parse(this.data.body.content);switch(i.cmd){case"peerdel":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==h.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(a.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._delPeer([i.payload.host,i.payload.an,i.payload.ai]);break;case"peeradd":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==h.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(a.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._addPeer([i.payload.host,i.payload.key,i.payload.an,i.payload.ai])}}catch(e){}break;case s.Wallet:if(e.NotifyList.get(this.data.sn))return;var n=this.data.body.dst,[n,o]=await e.getAccountByAddress(n,t);this.data.account=o,this.data.wid=n,e.emit("notify/receive",this.data),u("notify/receive",this.data),await e.NotifyList.set(this.data.sn,this.data)}return!0}async confirm(){}async unconfirm(){}async erase(){var e=this.options.env;return this.options.tx,this.mode===s.Wallet&&(await e.NotifyList.delete(this.data.sn),e.emit("notify/remove",this.data),u("notify/remove",this.data)),!0}async verify(){var e=this.options.env,t=this.options.tx;return t.getOutputValue()<.1*c.COIN?"Notify.invalidDeposit":2<t.outputs.length?"Notify.invalidFormat":!(this.data.h>e.curHeight)||"Notify.invalidHeight"}isBlockFinal(){var e=this.options.env;return this.data.h<e.curHeight-6?n.Expired:n.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractStatus:s,BlockFinalType:n}=i(5),o=i(37).VerifyError;e.exports=class extends r{async insert(){var e=this.options.env;return this.data.period<e.curHeight?await e.transactionList.delTransContract(this.data,!0):(this.data.current={hash:this.options.hash,index:0},this.data.raw=this.options.raw,await e.transactionList.addTransContract(a.Mempool,this.data)),!0}async erase(){var e=this.options.env;switch(this.mode){case a.Mempool:await e.transactionList.delTransContract(this.data);break;case a.Wallet:await e.transactionList.delTransContract(this.data,!0)}}async verify(){var e=this.options.env,t=this.options.tx;if(this.data.period<e.curHeight)throw new o(t,"transaction contract expired","contract",0);if(e.transactionList.query(this.data.type,this.data.addr)!=s.None)throw new o(t,"Same Address Contract Finded","contract",0);return!0}isBlockFinal(){var e=this.options.env;return this.data.period<e.curHeight?n.Expired:n.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractStatus:s}=i(5),n=i(108);e.exports=class extends r{async confirm(){var e=this.options.env;let t=s.Backed;switch(2==this.data.master&&(t=s.Exchanged),this.mode){case a.Block:var i=e.transactionList.get(this.data.type+"."+this.data.addr);i?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(a.Block,this.data,!0);break;case a.Wallet:(i=e.transactionList.get(this.data.type+"."+this.data.addr))?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(a.Wallet,this.data,!0)}return!0}async verify(){var e=this.options.env;switch(this.mode){case a.Mempool:case a.Block:case a.Wallet:{var t=this.data.master,i=e.transactionList.get(this.data.type+"."+this.data.addr);let r=i.transStatus;return r!==s.Expired&&r!==s.Confirmed&&r!==s.Backed&&r!==s.Exchanged&&(i=new n(e.network.txcheckpoint,i),[,r]=await i.execute(e)),r!==s.Expired&&r!==s.Confirmed&&r!==s.Backed&&r!==s.Exchanged?"ContractPromise.invalidStatus":!(r==s.Expired&&1!=t||r==s.Confirmed&&2!=t||r==s.Backed&&1!=t||r==s.Exchanged&&2!=t)||"ContractPromise.limited"}}}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,VerifyCode:s}=i(5),n=i(153).ErItem,o=i(38),c=i(6),u=i(13),h=i(44).broadcast;e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;if(!(this.data.startHeight=e.curHeight,await e.erList.getEr(this.data.erid))){switch(await e.erList.setEr(this.data,t),this.mode){case a.Wallet:var i=u.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);i&&r&&(this.data.account=r,this.data.wid=i,e.emit("ca/issue",this.data),h("ca/issue",this.data));break;case a.Block:e.node.transmit("ca.issue",this.data),e.node.config.alliancePrivateKey&&(r=o.fromPrivate(Buffer.from(e.node.config.alliancePrivateKey,"hex"),!0,e.network),o.fromPrivate(c.hash256(Buffer.concat([Buffer.from(this.data.source.cid+"-"+this.data.source.uid),r.privateKey]),!0,e.network)).publicKey.toString("hex")==this.data.witness)&&e.node.transmit("ca.issue.alliance",this.data)}return!0}e.logger.warning("ErIssue.conflict",this.data.erid,", height: ",e.curHeight,"mode: ",e.mode,t.txid())}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erList.delEr(this.data,t),this.mode){case a.Wallet:var i=u.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unissue",this.data),h("ca/unissue",this.data);break;case a.Block:e.node.transmit("ca.unissue",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data;e=o.fromPublic(Buffer.from(t.witness,"hex"),e.network);return!!new n(t).verifying(e)||s.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,VerifyCode:s,ContractType:n}=i(5),o=i(154).ErAbolishItem,c=i(38),u=i(44).broadcast,h=i(6),l=i(13);e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;switch(this.data.startHeight=e.curHeight,await e.erAbList.setErAb(this.data,t),this.mode){case a.Wallet:var i=l.fromWitnessPubkeyhash(h.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/abolish",this.data),u("ca/abolish",this.data);break;case a.Block:e.node.transmit("ca.abolish",this.data)}return!0}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erAbList.delErAb(this.data,t),this.mode){case a.Wallet:var i=l.fromWitnessPubkeyhash(h.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unabolish",this.data),u("ca/unabolish",this.data);break;case a.Block:e.node.transmit("ca.unabolish",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data,i=await e.erList.getEr(t.erid);return i&&i.witness==t.witness?t&&t.oper==n.erAbolish&&(i=await e.erAbList.getErAb(t.erid))&&t.abolishHeight>=i.abolishHeight?s.NotExistER:(i=c.fromPublic(Buffer.from(t.witness,"hex"),e.network),!!new o(t).verifying(i)||s.SignatureNotMatch):s.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{VerifyCode:a,ContractEnvType:s}=i(5),n=i(228).EnchancementItem,o=i(38);e.exports=class extends r{async insert(){return!0}async confirm(){var e,t;return this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.enchanceTx=t.txid(),e.enCpList.setEn(this.data),!0)}async unconfirm(){var e,t;return this.mode==s.Block&&(e=this.options.env,t=this.options.tx,e.enCpList.delEn(this.data,t),!0)}async erase(){return!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data,r=e.cpList.getItem(i.to);t=t.outputs[1].getAddress().toString();return r&&r.pubAddress&&r.pubAddress==t&&(r=e.cpList.getItem(i.from))&&r.pubAddress&&r.pubKey?(t=o.fromPublic(Buffer.from(r.pubKey,"hex"),e.network),!!new n(i).verifying(t)||a.SignatureNotMatch):a.NotExistCp}}},function(e,t,i){"use strict";
|
|
440
|
+
*/function r(e,t){this.resolve=e,this.reject=t}function a(){}e.exports=class{constructor(){this.jobs=new Map,this.busy=new Set,this.destroyed=!1}has(e){return this.busy.has(e)}hasPending(e){return this.jobs.has(e)}lock(e,t){return this.destroyed?Promise.reject(new Error("Lock is destroyed.")):null==e||t?Promise.resolve(a):this.busy.has(e)?new Promise((t,i)=>{this.jobs.has(e)||this.jobs.set(e,[]),this.jobs.get(e).push(new r(t,i))}):(this.busy.add(e),Promise.resolve(this.unlock(e)))}unlock(e){const t=this;return function i(){var r,a;!t.destroyed&&t.busy.has(e)&&(t.busy.delete(e),r=t.jobs.get(e))&&(0===r.length&&t.jobs.delete(e),a=r.shift(),0===r.length&&t.jobs.delete(e),t.busy.add(e),a.resolve(i))}}destroy(){if(!this.destroyed){this.destroyed=!0;var e=this.jobs;this.busy=new Map,this.jobs=new Map;for(const t of e.values())for(const e of t)e.reject(new Error("MappedLock was destroyed."))}}}},function(e,t,i){var r=i(14);const a=i(5).ContractEnvType,s=i(37).VerifyError,n=i(151).scItem,o=i(72).verifyData,c=i(0),u=i(44).broadcast;e.exports=class extends r{async confirm(){var e,t;this.mode==a.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,this.data.indate?this.data.indate=this.data.height+Math.max(144,Math.min(52560,this.data.indate)):this.data.indate=this.data.height+4320,t=new n({type:this.data.type,addr:this.data.addr,dst:this.data.dst,height:this.data.height,state:1,ver:1,indate:this.data.indate}),this.data.cls&&(t.options.cls=this.data.cls,this.mode===a.Block)&&"publish"==this.data.cls&&u("sc/publish",t.options),t.do(),await e.scList.addItem(t))}async unconfirm(){this.mode==a.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e8!=i.value||!this.data)throw new s(t,"invalid","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0<e.scList.query([["options.dst",this.data.dst]]).length)throw new s(t,"Contract Register Conflict","another contract already on "+this.data.dst,100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new s(t,"Invalid Smart Contract","Receive address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractState:s}=i(5),n=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==a.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.ver+=1,t.list[0].options.type=this.data.type,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==a.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new n(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new n(t,"Contract Not Exists","contract not exists",100);if(e.list[0].options.state!=s.Normal)throw new n(t,"Contract State Error","contract state error",100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new n(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractState:s}=i(5),n=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==a.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.state=this.data.state,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==a.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new n(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new n(t,"Contract Not Exists","contract not exists",100);switch(e.list[0].options.state){case s.Normal:if(this.data.state!=s.Frozen&&this.data.state!=s.Destroy)throw new n(t,"Contract State Error","contract state error",100);break;case s.Frozen:if(this.data.state!=s.Normal&&this.data.state!=s.Destroy)throw new n(t,"Contract State Error","contract state error",100);break;default:throw new n(t,"Contract State Error","contract state error",100)}if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new n(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractState:s}=i(5),n=i(37).VerifyError,o=i(7),c=i(152),u=i(42);e.exports=class extends r{async onPacking(){var e=this.options.env,t=this.options.tx.hash("hex"),i=await e.node.cdb.get("primary"),r=this.data.$top;let a={derive:[]};var s=await i.getStatusOfSC(t);if(s.txs)for(var n of s.txs)(n=await i.getTX(n))&&a.derive.push(n.tx);else if((s=await this.getContract())&&(s={height:e.curHeight,data:this.data,tx:this.options.tx,contract:s,wallet:i},s=c(s)))if((a=await s.run()).derive&&a.derive.length<o.MAX_PACKING_SIZE){let s=[];for(var h of a.derive)if((h=await(await u.FactoryOfContract({tx:h,env:e})).onPacking()).derive){if(!(a.derive.length+s.length+h.derive.length<o.MAX_PACKING_SIZE))break;s=s.concat(h.derive)}a.derive=a.derive.concat(s),r||await i.setStatusOfSC(t,a.derive.map(e=>e.hash("hex")))}else a.derive=[];return a}async confirm(){var e,t,i;if(this.mode==a.Block)return e=this.options.env,(t=await this.getContract())&&(i=c({data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")}))&&(t.do(),await e.scList.addItem(t),await i.confirm()),!0}async unconfirm(){var e,t,i;if(this.mode==a.Block)return e=this.options.env,(t=await this.getContract())&&(i={data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")},i=c(i))&&(t.undo(),await e.scList.addItem(t),await i.unconfirm()),!0}async verify(){var e=this.options.env,t=this.options.tx,i=await this.getContract();if(!i)throw new n(t,"invalid","contract not found",100);if(i.options.state!=s.Normal)throw new n(t,"invalid","contract version conflict",100);if(this.data.params.ver&&this.data.params.ver!=i.options.ver)throw new n(t,"invalid","contract version conflict",100);if(i.options.indate<e.curHeight)throw new n(t,"invalid","contract expired",100);return t={data:this.data,tx:t,contract:i,wallet:await e.node.cdb.get("primary")},(i=c(t))?i.verify():"scRun.errorType"}async getContract(){if(0<this.options.tx.outputs.length){var e=this.options.tx.outputs[1].getAddress().toString();if((e=await this.options.env.node.chain.db.getSCList([["options.dst",e]]))&&0<e.list.length)return e.list[0]}return null}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){var e,t,i,r,a,s;return await this.verify()?(e=await super.run(),t=this.options.contract.options.addr,i=this.options.tx.outputs[1].value,r=this.options.wallet,s=this.options.data.params.relay,a=this.options.data.$top||0,s=await r.send({sendafter:!(r=[]),subtractFee:!1,sort:!1,outputs:[{address:s,value:i}],comment:JSON.stringify({$tag:"inner",$top:a+1,oper:"scrun",hash:this.options.tx.hash("hex"),account:t,params:this.options.data.params.params})},t),r.push(s),e.derive=r,e):{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,a=this.options.contract.options.addr;let s=this.options.data.params.sim;s||(s=(n=this.options.tx.inputs[0]).getAddress().toString());var n=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:s,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:n+1,hash:this.options.tx.hash("hex"),account:a})},a);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,a=this.options.contract.options.addr;let s=this.options.data.params.sim;s||(s=(n=this.options.tx.inputs[0]).getAddress().toString());var n=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:s,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:n+1,hash:this.options.tx.hash("hex"),account:a})},a);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){return await this.verify()?await super.run():{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[];let i=this.options.contract;var r=this.options.data.params.oper,a=this.options.wallet,s=i.options.addr;switch(r){case"pubk":{var n,o,c,u=this.options.data.params.addr,h=this.options.data.params.pubk,l=this.options.data.params.partner;"object"==typeof i.options.contacts&&!Array.isArray(i.options.contacts)||(i.options.contacts={}),l&&l.split(",").map(e=>{i.options.contacts[e]||(i.options.contacts[e]={st:0})});let e="";for(n of Object.keys(i.options.contacts))u!=n&&(o=i.options.contacts[n],c=await a.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:n,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:h,m:i.options.m,n:i.options.n,contract:i.options.dst,account:s})},s),t.push(c),o.pubk)&&(e&&(e+=","),e+=o.pubk);e&&(l=await a.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:u,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:e,contract:i.options.dst,account:s})},s),t.push(l)),i.options.contacts[u]?i.options.contacts[u].pubk||(i.options.contacts[u].pubk=h):i.options.contacts[u]={pubk:h,st:0};break}case"puba":{var p,d=this.options.data.params.addr,f=this.options.data.params.puba;let e=!0;for(p of(i.options.puba=i.options.puba||f,Object.keys(i.options.contacts))){var m=i.options.contacts[p];p==d&&i.options.puba==f&&(m.st=1),1!=m.st&&(e=!1)}i.options.status=e;break}case"sign":if(1==i.options.status){var g,v,y=this.options.data.params.addr;for(g of Object.keys(i.options.contacts))g!=y&&(v=await a.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:g,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendtx",$tag:"inner",hash:this.options.tx.hash("hex"),data:this.options.data.params.tx,contract:i.options.dst,account:s})},s),t.push(v))}break;default:return e}return e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){var r=i(14);const a=i(5).ContractEnvType,s=i(44).broadcast;e.exports=class extends r{async confirm(){var e;this.mode==a.Wallet&&(e=this.options.tx.outputs[1])&&(this.data.addr=e.getAddress().toString(),this.options.env.emit(this.data.type+"/receive",this.data),s(this.data.type+"/receive",this.data))}async verify(){return!0}}},function(e,t,i){const r=i(0);var a=i(14);const{ContractEnvType:s,PropStatus:n}=i(5);e.exports=class extends a{async confirm(){var e=this.options.env,t=await e.propList.getVp(this.data.ori.pid);return t&&(t.pst=n.Delete,await e.propList.setVp(t),e.mode==s.Block)&&(t={pid:t.pid},e.node.transmit("prop.found",t)),!0}async unconfirm(){var e=this.options.env,t=this.options.tx,i=await e.propList.getVp(this.data.ori.pid);return i&&i.current.hash==t.inputs[0].prevout.hash&&i.current.index==t.inputs[0].prevout.index&&(i.pst=n.Ready,await e.propList.setVp(i)),!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data;return i.ori&&i.ori.pid?e.network.tokenReg.test(i.ori.pid)?"propfound.protected":(e=await e.propList.getVp(i.ori.pid))&&e.pst==n.Ready?(r.strictEqual(e.current.hash,t.inputs[0].prevout.hash),r.strictEqual(e.current.index,t.inputs[0].prevout.index),!0):"propfound.invalidStatus":"propfound.invalidAncestor"}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractType:s}=i(5),n=i(7),o=i(19).opcodes;e.exports=class extends r{async confirm(){return this.options.env,this.options.tx.hash("hex"),this.mode===a.Block&&await this.HandleVoteTrans(!1),!0}async unconfirm(){return this.options.env,this.options.tx,this.mode===a.Block&&await this.HandleVoteTrans(!0),!0}async HandleVoteTrans(e){var t=this.options.env,i=this.options.tx,r=this.options.tx.outputs[0].script.code;if(r[0].value==o.OP_RETURN)try{var a=JSON.parse(Buffer.from(r[1].data).toString());if(a&&a.oper==s.vote)switch(a.type){case"mine":{let r=0;for(var c of i.inputs){var u,h=await t.getExtendTX(c.prevout.hash);h&&t.voteMgr.isIn(h.height)?(u=h.tx.outputs[c.prevout.index])&&u.value?r+=u.value/n.COIN|0:t.logger.warning("Voting: Invalid UTXO Info"):t.logger.warning("Voting: Invalid UTXO Height")}0<r&&await t.voteMgr.calcVote(r,a.ca,e);break}case"oracle":{let r=0;for(var l of i.inputs){var p,d=await t.getExtendTX(l.prevout.hash);d&&t.voteMgr.isIn(d.height)?(p=d.tx.outputs[l.prevout.index])&&p.value?r+=p.value/1e5|0:t.logger.warning("Oracle: Invalid UTXO Info"):t.logger.warning("Oracle: Invalid UTXO Height")}0<r&&await t.voteMgr.calcOracle(r,{k:a.k,v:a.v},e);break}}}catch(r){console.log(r)}}async verify(){return!0}}},function(e,t,i){const r=i(0);var a=i(14);const{BlockFinalType:s,ContractEnvType:n,ContractType:o,PropStatus:c}=i(5),u=i(37).VerifyError,h=i(7);var{}=i(44);i(2);const l=i(31);e.exports=class extends a{async insert(){var e=this.options.env,t=this.options.tx,i=2<t.outputs.length?t.outputs[2].getReturnData():null,a=await e.propList.getVp(this.data.pid);if(a){if(i){if(this.mode==n.Wallet&&a.bid&&(i=await e.getTX(a.bid.hash))&&(i=await e.getWalletsByTX(i)))for(const t of i){var s=await e.get(t);r(s),await s.remove(a.bid.hash)}i=t.outputs[1].value;var o=t.outputs[2].getAddress().toString();i>=this.data.fixed||e.curHeight>=this.data.period&&i>a.gold?(a.pst=c.Sale,a.bid={},a.bid.raw=this.options.raw,a.bid.fixed=this.data.fixed,a.bid.period=this.data.period,a.bid.hash=this.options.hash,a.bid.value=i,a.bid.address=o,await e.propList.setVp(a,t)):(a.pst=c.Sale,a.bid={},a.bid.raw=this.options.raw,a.bid.fixed=this.data.fixed,a.bid.period=this.data.period,a.bid.hash=this.options.hash,a.bid.value=i,a.bid.address=o,await e.propList.setVp(a))}else a.pst=c.Sale,a.bid={},a.bid.raw=this.options.raw,a.bid.fixed=this.data.fixed,a.bid.period=this.data.period,a.bid.hash=this.options.hash,a.bid.value=a.gold,a.bid.address="",await e.propList.setVp(a);this.mode==n.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(a.pid,Object.assign({pid:a.pid,oid:a.oid,cid:a.cid,curAddress:a.current.address,curGold:a.gold,status:c.Sale},a.bid)))}return!0}async erase(){var e=this.options.env,t=2<(i=this.options.tx).outputs.length?i.outputs[2].getReturnData():null,i=i.inputs[0],r=await e.propList.getVp(this.data.pid);r&&(t?(t=await e.getExtendTX(i.prevout.hash))&&(t.tx.outputs[i.prevout.index],r.bid={hash:this.options.hash,value:r.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},r.pst=c.Sale,await e.propList.setVp(r,t.tx),this.mode==n.Mempool)&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(r.pid,Object.assign({pid:r.pid,oid:r.oid,cid:r.cid,curAddress:r.current.address,curGold:r.gold,status:c.Sale},r.bid))):(r.pst=c.Ready,await e.propList.setVp(r),this.mode==n.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(r.pid))))}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=t.outputs[2].getAddress().toString(),a=await e.propList.getVp(this.data.pid);return a&&(this.mode==n.Block&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(a.pid),e.node.transmit("prop.bid",{status:c.Ready,pid:a.pid,bid:Object.assign({},a.bid),height:this.options.coinbaseHeight})),a.current={hash:i,index:2,address:r},a.height=this.options.coinbaseHeight,a.pst=c.Ready,await e.propList.setVp(a,t)),!0}async unconfirm(){var e,t,i=this.options.env,r=this.options.tx,a=r.inputs[0].prevout,s=await i.getExtendTX(a.hash);return s?(t=(e=s.tx.outputs[a.index]).getReturnData(),(t=await i.propList.getVp(t.pid))&&(t.current={hash:a.hash,index:a.index,address:e.getAddress().toString()},t.height=s.height-1,await i.propList.setVp(t,r)),this.mode==n.Block&&i.node.transmit("prop.bid",{status:c.Delete,pid:t.pid,address:t.current.address,time:this.options.block.time,height:t.height})):this.mode==n.Wallet&&(a=await i.propList.getVp(this.data.pid),await i.propList.delVp(a)),!0}async verify(){var e=this.data,t=this.options.env,i=this.options.tx,a=2<i.outputs.length?i.outputs[2].getReturnData():null,s=await t.propList.getVp(e.pid);if(!s)return"propsale.notExist";switch(this.mode){case n.Mempool:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(t.curHeight+h.BLOCK_DAY>=this.data.period),r(e.cid!=t.network.genesisId),a&&(r.strictEqual(a.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(a.prev.index,i.inputs[0].prevout.index),r.strictEqual(a.pid,e.pid),r.strictEqual(a.oper,o.propExchange),s.bid)){if(s.period<t.curHeight)throw new u(i,"sale order expired","contract",0);if(s.bid.value>=this.data.fixed)throw new u(i,"can not bid on sale order finished","contract",0);if(i.outputs[1].value<=s.bid.value||i.outputs[1].value<=s.gold)throw new u(i,"invalid bid price","contract",0);var c=await t.getTX(s.bid.hash);c&&await t.removeDoubleSpenders(c)}break;case n.Block:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(e.cid!=t.network.genesisId),r.strictEqual(a.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(a.prev.index,i.inputs[0].prevout.index),r.strictEqual(a.pid,e.pid),r.strictEqual(a.oper,o.propExchange),i.outputs[1].value<=s.gold)throw new u(i,"invalid bid price","contract",0)}return!0}isBlockFinal(){var e=this.options.env,t=this.options.tx;return this.data.period<e.curHeight?s.Expired:2<=t.outputs.length&&(t.outputs[1].value>=this.data.fixed||this.data.period==e.curHeight&&t.outputs[1].value>=t.outputs[2].value)?s.Final:s.Waiting}isPreVerify(){var e=this.options.tx;return!!(2<e.outputs.length&&e.outputs[2].getReturnData())}}},function(e,t,i){const r=i(0),a=i(107),{ContractEnvType:s,BlockFinalType:n}=i(5);var o=i(14);const c=i(7),u=i(44).broadcast,h=i(6),l=i(13);e.exports=class extends o{async insert(){var e=this.options.env,t=this.options.tx;switch(this.data.body.dst=t.outputs[1].getAddress().toString(),this.mode){case s.Mempool:try{var i=JSON.parse(this.data.body.content);switch(i.cmd){case"peerdel":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==h.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(a.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._delPeer([i.payload.host,i.payload.an,i.payload.ai]);break;case"peeradd":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==h.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(a.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._addPeer([i.payload.host,i.payload.key,i.payload.an,i.payload.ai])}}catch(e){}break;case s.Wallet:if(e.NotifyList.get(this.data.sn))return;var n=this.data.body.dst,[n,o]=await e.getAccountByAddress(n,t);this.data.account=o,this.data.wid=n,e.emit("notify/receive",this.data),u("notify/receive",this.data),await e.NotifyList.set(this.data.sn,this.data)}return!0}async confirm(){}async unconfirm(){}async erase(){var e=this.options.env;return this.options.tx,this.mode===s.Wallet&&(await e.NotifyList.delete(this.data.sn),e.emit("notify/remove",this.data),u("notify/remove",this.data)),!0}async verify(){var e=this.options.env,t=this.options.tx;return t.getOutputValue()<.1*c.COIN?"Notify.invalidDeposit":2<t.outputs.length?"Notify.invalidFormat":!(this.data.h>e.curHeight)||"Notify.invalidHeight"}isBlockFinal(){var e=this.options.env;return this.data.h<e.curHeight-6?n.Expired:n.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractStatus:s,BlockFinalType:n}=i(5),o=i(37).VerifyError;e.exports=class extends r{async insert(){var e=this.options.env;return this.data.period<e.curHeight?await e.transactionList.delTransContract(this.data,!0):(this.data.current={hash:this.options.hash,index:0},this.data.raw=this.options.raw,await e.transactionList.addTransContract(a.Mempool,this.data)),!0}async erase(){var e=this.options.env;switch(this.mode){case a.Mempool:await e.transactionList.delTransContract(this.data);break;case a.Wallet:await e.transactionList.delTransContract(this.data,!0)}}async verify(){var e=this.options.env,t=this.options.tx;if(this.data.period<e.curHeight)throw new o(t,"transaction contract expired","contract",0);if(e.transactionList.query(this.data.type,this.data.addr)!=s.None)throw new o(t,"Same Address Contract Finded","contract",0);return!0}isBlockFinal(){var e=this.options.env;return this.data.period<e.curHeight?n.Expired:n.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,ContractStatus:s}=i(5),n=i(108);e.exports=class extends r{async confirm(){var e=this.options.env;let t=s.Backed;switch(2==this.data.master&&(t=s.Exchanged),this.mode){case a.Block:var i=e.transactionList.get(this.data.type+"."+this.data.addr);i?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(a.Block,this.data,!0);break;case a.Wallet:(i=e.transactionList.get(this.data.type+"."+this.data.addr))?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(a.Wallet,this.data,!0)}return!0}async verify(){var e=this.options.env;switch(this.mode){case a.Mempool:case a.Block:case a.Wallet:{var t=this.data.master,i=e.transactionList.get(this.data.type+"."+this.data.addr);let r=i.transStatus;return r!==s.Expired&&r!==s.Confirmed&&r!==s.Backed&&r!==s.Exchanged&&(i=new n(e.network.txcheckpoint,i),[,r]=await i.execute(e)),r!==s.Expired&&r!==s.Confirmed&&r!==s.Backed&&r!==s.Exchanged?"ContractPromise.invalidStatus":!(r==s.Expired&&1!=t||r==s.Confirmed&&2!=t||r==s.Backed&&1!=t||r==s.Exchanged&&2!=t)||"ContractPromise.limited"}}}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,VerifyCode:s}=i(5),n=i(153).ErItem,o=i(38),c=i(6),u=i(13),h=i(44).broadcast;e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;if(!(this.data.startHeight=e.curHeight,await e.erList.getEr(this.data.erid))){switch(await e.erList.setEr(this.data,t),this.mode){case a.Wallet:var i=u.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);i&&r&&(this.data.account=r,this.data.wid=i,e.emit("ca/issue",this.data),h("ca/issue",this.data));break;case a.Block:e.node.transmit("ca.issue",this.data),e.node.config.alliancePrivateKey&&(r=o.fromPrivate(Buffer.from(e.node.config.alliancePrivateKey,"hex"),!0,e.network),o.fromPrivate(c.hash256(Buffer.concat([Buffer.from(this.data.source.cid+"-"+this.data.source.uid),r.privateKey]),!0,e.network)).publicKey.toString("hex")==this.data.witness)&&e.node.transmit("ca.issue.alliance",this.data)}return!0}e.logger.warning("ErIssue.conflict",this.data.erid,", height: ",e.curHeight,"mode: ",e.mode,t.txid())}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erList.delEr(this.data,t),this.mode){case a.Wallet:var i=u.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unissue",this.data),h("ca/unissue",this.data);break;case a.Block:e.node.transmit("ca.unissue",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data;e=o.fromPublic(Buffer.from(t.witness,"hex"),e.network);return!!new n(t).verifying(e)||s.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{ContractEnvType:a,VerifyCode:s,ContractType:n}=i(5),o=i(154).ErAbolishItem,c=i(38),u=i(44).broadcast,h=i(6),l=i(13);e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;switch(this.data.startHeight=e.curHeight,await e.erAbList.setErAb(this.data,t),this.mode){case a.Wallet:var i=l.fromWitnessPubkeyhash(h.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/abolish",this.data),u("ca/abolish",this.data);break;case a.Block:e.node.transmit("ca.abolish",this.data)}return!0}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erAbList.delErAb(this.data,t),this.mode){case a.Wallet:var i=l.fromWitnessPubkeyhash(h.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unabolish",this.data),u("ca/unabolish",this.data);break;case a.Block:e.node.transmit("ca.unabolish",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data,i=await e.erList.getEr(t.erid);return i&&i.witness==t.witness?t&&t.oper==n.erAbolish&&(i=await e.erAbList.getErAb(t.erid))&&t.abolishHeight>=i.abolishHeight?s.NotExistER:(i=c.fromPublic(Buffer.from(t.witness,"hex"),e.network),!!new o(t).verifying(i)||s.SignatureNotMatch):s.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{VerifyCode:a,ContractEnvType:s}=i(5),n=i(228).EnchancementItem,o=i(38);e.exports=class extends r{async insert(){return!0}async confirm(){var e,t;return this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.enchanceTx=t.txid(),e.enCpList.setEn(this.data),!0)}async unconfirm(){var e,t;return this.mode==s.Block&&(e=this.options.env,t=this.options.tx,e.enCpList.delEn(this.data,t),!0)}async erase(){return!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data,r=e.cpList.getItem(i.to);t=t.outputs[1].getAddress().toString();return r&&r.pubAddress&&r.pubAddress==t&&(r=e.cpList.getItem(i.from))&&r.pubAddress&&r.pubKey?(t=o.fromPublic(Buffer.from(r.pubKey,"hex"),e.network),!!new n(i).verifying(t)||a.SignatureNotMatch):a.NotExistCp}}},function(e,t,i){"use strict";
|
|
441
441
|
/*!
|
|
442
442
|
* TXRecord.js
|
|
443
443
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
package/lib/gamegold.js
CHANGED
|
@@ -211,7 +211,7 @@ let r=[];[i(558),i(559),i(560),i(561),i(562),i(563),i(564),i(565),i(566),i(567),
|
|
|
211
211
|
* pkg.js - package constants
|
|
212
212
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
213
213
|
* https://github.com/bookmansoft/gamegold
|
|
214
|
-
*/t.protocol="vallnet",t.version="5.7.
|
|
214
|
+
*/t.protocol="vallnet",t.version="5.7.5",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
|
|
215
215
|
/*!
|
|
216
216
|
* common.js - p2p constants for vallnet
|
|
217
217
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
@@ -451,7 +451,7 @@ const r=i(5).ContractType;e.exports=function(e){if(!e)return i(188);switch(e.ope
|
|
|
451
451
|
/*!
|
|
452
452
|
* mappedlock.js - lock and queue for vallnet
|
|
453
453
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
454
|
-
*/function r(e,t){this.resolve=e,this.reject=t}function s(){}e.exports=class{constructor(){this.jobs=new Map,this.busy=new Set,this.destroyed=!1}has(e){return this.busy.has(e)}hasPending(e){return this.jobs.has(e)}lock(e,t){return this.destroyed?Promise.reject(new Error("Lock is destroyed.")):null==e||t?Promise.resolve(s):this.busy.has(e)?new Promise((t,i)=>{this.jobs.has(e)||this.jobs.set(e,[]),this.jobs.get(e).push(new r(t,i))}):(this.busy.add(e),Promise.resolve(this.unlock(e)))}unlock(e){const t=this;return function i(){var r,s;!t.destroyed&&t.busy.has(e)&&(t.busy.delete(e),r=t.jobs.get(e))&&(0===r.length&&t.jobs.delete(e),s=r.shift(),0===r.length&&t.jobs.delete(e),t.busy.add(e),s.resolve(i))}}destroy(){if(!this.destroyed){this.destroyed=!0;var e=this.jobs;this.busy=new Map,this.jobs=new Map;for(const t of e.values())for(const e of t)e.reject(new Error("MappedLock was destroyed."))}}}},function(e,t,i){var r=i(14);const s=i(5).ContractEnvType,n=i(37).VerifyError,a=i(151).scItem,o=i(72).verifyData,c=i(0),h=i(44).broadcast;e.exports=class extends r{async confirm(){var e,t;this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,this.data.indate?this.data.indate=this.data.height+Math.max(144,Math.min(52560,this.data.indate)):this.data.indate=this.data.height+4320,t=new a({type:this.data.type,addr:this.data.addr,dst:this.data.dst,height:this.data.height,state:1,ver:1,indate:this.data.indate}),this.data.cls&&(t.options.cls=this.data.cls,this.mode===s.Block)&&"publish"==this.data.cls&&h("sc/publish",t.options),t.do(),await e.scList.addItem(t))}async unconfirm(){this.mode==s.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e8!=i.value||!this.data)throw new n(t,"invalid","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0<e.scList.query([["options.dst",this.data.dst]]).length)throw new n(t,"Contract Register Conflict","another contract already on "+this.data.dst,100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new n(t,"Invalid Smart Contract","Receive address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractState:n}=i(5),a=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.ver+=1,t.list[0].options.type=this.data.type,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==s.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new a(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new a(t,"Contract Not Exists","contract not exists",100);if(e.list[0].options.state!=n.Normal)throw new a(t,"Contract State Error","contract state error",100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new a(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractState:n}=i(5),a=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.state=this.data.state,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==s.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new a(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new a(t,"Contract Not Exists","contract not exists",100);switch(e.list[0].options.state){case n.Normal:if(this.data.state!=n.Frozen&&this.data.state!=n.Destroy)throw new a(t,"Contract State Error","contract state error",100);break;case n.Frozen:if(this.data.state!=n.Normal&&this.data.state!=n.Destroy)throw new a(t,"Contract State Error","contract state error",100);break;default:throw new a(t,"Contract State Error","contract state error",100)}if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new a(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractState:n}=i(5),a=i(37).VerifyError,o=i(7),c=i(152),h=i(42);e.exports=class extends r{async onPacking(){var e=this.options.env,t=this.options.tx.hash("hex"),i=await e.node.cdb.get("primary"),r=this.data.$top;let s={derive:[]};var n=await i.getStatusOfSC(t);if(n.txs)for(var a of n.txs)(a=await i.getTX(a))&&s.derive.push(a.tx);else if((n=await this.getContract())&&(n={height:e.curHeight,data:this.data,tx:this.options.tx,contract:n,wallet:i},n=c(n)))if((s=await n.run()).derive&&s.derive.length<o.MAX_PACKING_SIZE){let n=[];for(var u of s.derive)if((u=await(await h.FactoryOfContract({tx:u,env:e})).onPacking()).derive){if(!(s.derive.length+n.length+u.derive.length<o.MAX_PACKING_SIZE))break;n=n.concat(u.derive)}s.derive=s.derive.concat(n),r||await i.setStatusOfSC(t,s.derive.map(e=>e.hash("hex")))}else s.derive=[];return s}async confirm(){var e,t,i;if(this.mode==s.Block)return e=this.options.env,(t=await this.getContract())&&(i=c({data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")}))&&(t.do(),await e.scList.addItem(t),await i.confirm()),!0}async unconfirm(){var e,t,i;if(this.mode==s.Block)return e=this.options.env,(t=await this.getContract())&&(i={data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")},i=c(i))&&(t.undo(),await e.scList.addItem(t),await i.unconfirm()),!0}async verify(){var e=this.options.env,t=this.options.tx,i=await this.getContract();if(!i)throw new a(t,"invalid","contract not found",100);if(i.options.state!=n.Normal)throw new a(t,"invalid","contract version conflict",100);if(this.data.params.ver&&this.data.params.ver!=i.options.ver)throw new a(t,"invalid","contract version conflict",100);if(i.options.indate<e.curHeight)throw new a(t,"invalid","contract expired",100);return t={data:this.data,tx:t,contract:i,wallet:await e.node.cdb.get("primary")},(i=c(t))?i.verify():"scRun.errorType"}async getContract(){if(0<this.options.tx.outputs.length){var e=this.options.tx.outputs[1].getAddress().toString();if((e=await this.options.env.node.chain.db.getSCList([["options.dst",e]]))&&0<e.list.length)return e.list[0]}return null}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){var e,t,i,r,s,n;return await this.verify()?(e=await super.run(),t=this.options.contract.options.addr,i=this.options.tx.outputs[1].value,r=this.options.wallet,n=this.options.data.params.relay,s=this.options.data.$top||0,n=await r.send({sendafter:!(r=[]),subtractFee:!1,sort:!1,outputs:[{address:n,value:i}],comment:JSON.stringify({$tag:"inner",$top:s+1,oper:"scrun",hash:this.options.tx.hash("hex"),account:t,params:this.options.data.params.params})},t),r.push(n),e.derive=r,e):{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,s=this.options.contract.options.addr;let n=this.options.data.params.sim;n||(n=(a=this.options.tx.inputs[0]).getAddress().toString());var a=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:n,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:a+1,hash:this.options.tx.hash("hex"),account:s})},s);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,s=this.options.contract.options.addr;let n=this.options.data.params.sim;n||(n=(a=this.options.tx.inputs[0]).getAddress().toString());var a=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:n,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:a+1,hash:this.options.tx.hash("hex"),account:s})},s);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){return await this.verify()?await super.run():{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[];let i=this.options.contract;var r=this.options.data.params.oper,s=this.options.wallet,n=i.options.addr;switch(r){case"pubk":{var a,o,c,h=this.options.data.params.addr,u=this.options.data.params.pubk,l=this.options.data.params.partner;"object"==typeof i.options.contacts&&!Array.isArray(i.options.contacts)||(i.options.contacts={}),l&&l.split(",").map(e=>{i.options.contacts[e]||(i.options.contacts[e]={st:0})});let e="";for(a of Object.keys(i.options.contacts))h!=a&&(o=i.options.contacts[a],c=await s.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:a,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:u,m:i.options.m,n:i.options.n,contract:i.options.dst,account:n})},n),t.push(c),o.pubk)&&(e&&(e+=","),e+=o.pubk);e&&(l=await s.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:h,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:e,contract:i.options.dst,account:n})},n),t.push(l)),i.options.contacts[h]?i.options.contacts[h].pubk||(i.options.contacts[h].pubk=u):i.options.contacts[h]={pubk:u,st:0};break}case"puba":{var p,d=this.options.data.params.addr,f=this.options.data.params.puba;let e=!0;for(p of(i.options.puba=i.options.puba||f,Object.keys(i.options.contacts))){var m=i.options.contacts[p];p==d&&i.options.puba==f&&(m.st=1),1!=m.st&&(e=!1)}i.options.status=e;break}case"sign":if(1==i.options.status){var g,y,v=this.options.data.params.addr;for(g of Object.keys(i.options.contacts))g!=v&&(y=await s.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:g,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendtx",$tag:"inner",hash:this.options.tx.hash("hex"),data:this.options.data.params.tx,contract:i.options.dst,account:n})},n),t.push(y))}break;default:return e}return e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){var r=i(14);const s=i(5).ContractEnvType,n=i(44).broadcast;e.exports=class extends r{async confirm(){var e;this.mode==s.Wallet&&(e=this.options.tx.outputs[1])&&(this.data.addr=e.getAddress().toString(),this.options.env.emit(this.data.type+"/receive",this.data),n(this.data.type+"/receive",this.data))}async verify(){return!0}}},function(e,t,i){const r=i(0);var s=i(14);const{ContractEnvType:n,PropStatus:a}=i(5);e.exports=class extends s{async confirm(){var e=this.options.env,t=await e.propList.getVp(this.data.ori.pid);return t&&(t.pst=a.Delete,await e.propList.setVp(t),e.mode==n.Block)&&(t={pid:t.pid},e.node.transmit("prop.found",t)),!0}async unconfirm(){var e=this.options.env,t=this.options.tx,i=await e.propList.getVp(this.data.ori.pid);return i&&i.current.hash==t.inputs[0].prevout.hash&&i.current.index==t.inputs[0].prevout.index&&(i.pst=a.Ready,await e.propList.setVp(i)),!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data;return i.ori&&i.ori.pid?e.network.tokenReg.test(i.ori.pid)?"propfound.protected":(e=await e.propList.getVp(i.ori.pid))&&e.pst==a.Ready?(r.strictEqual(e.current.hash,t.inputs[0].prevout.hash),r.strictEqual(e.current.index,t.inputs[0].prevout.index),!0):"propfound.invalidStatus":"propfound.invalidAncestor"}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractType:n}=i(5),a=i(7),o=i(19).opcodes;e.exports=class extends r{async confirm(){return this.options.env,this.options.tx.hash("hex"),this.mode===s.Block&&await this.HandleVoteTrans(!1),!0}async unconfirm(){return this.options.env,this.options.tx,this.mode===s.Block&&await this.HandleVoteTrans(!0),!0}async HandleVoteTrans(e){var t=this.options.env,i=this.options.tx,r=this.options.tx.outputs[0].script.code;if(r[0].value==o.OP_RETURN)try{var s=JSON.parse(Buffer.from(r[1].data).toString());if(s&&s.oper==n.vote)switch(s.type){case"mine":{let r=0;for(var c of i.inputs){var h,u=await t.getExtendTX(c.prevout.hash);u&&t.voteMgr.isIn(u.height)?(h=u.tx.outputs[c.prevout.index])&&h.value?r+=h.value/a.COIN|0:t.logger.warning("Voting: Invalid UTXO Info"):t.logger.warning("Voting: Invalid UTXO Height")}0<r&&await t.voteMgr.calcVote(r,s.ca,e);break}case"oracle":{let r=0;for(var l of i.inputs){var p,d=await t.getExtendTX(l.prevout.hash);d&&t.voteMgr.isIn(d.height)?(p=d.tx.outputs[l.prevout.index])&&p.value?r+=p.value/1e5|0:t.logger.warning("Oracle: Invalid UTXO Info"):t.logger.warning("Oracle: Invalid UTXO Height")}0<r&&await t.voteMgr.calcOracle(r,{k:s.k,v:s.v},e);break}}}catch(r){console.log(r)}}async verify(){return!0}}},function(e,t,i){const r=i(0);var s=i(14);const{BlockFinalType:n,ContractEnvType:a,ContractType:o,PropStatus:c}=i(5),h=i(37).VerifyError,u=i(7);var{}=i(44);i(2);const l=i(31);e.exports=class extends s{async insert(){var e=this.options.env,t=this.options.tx,i=2<t.outputs.length?t.outputs[2].getReturnData():null,s=await e.propList.getVp(this.data.pid);if(s){if(i){if(this.mode==a.Wallet&&s.bid&&(i=await e.getTX(s.bid.hash))&&(i=await e.getWalletsByTX(i)))for(const t of i){var n=await e.get(t);r(n),await n.remove(s.bid.hash)}i=t.outputs[1].value;var o=t.outputs[2].getAddress().toString();i>=this.data.fixed||e.curHeight>=this.data.period&&i>s.gold?(s.pst=c.Sale,s.bid={},s.bid.raw=this.options.raw,s.bid.fixed=this.data.fixed,s.bid.period=this.data.period,s.bid.hash=this.options.hash,s.bid.value=i,s.bid.address=o,await e.propList.setVp(s,t)):(s.pst=c.Sale,s.bid={},s.bid.raw=this.options.raw,s.bid.fixed=this.data.fixed,s.bid.period=this.data.period,s.bid.hash=this.options.hash,s.bid.value=i,s.bid.address=o,await e.propList.setVp(s))}else s.pst=c.Sale,s.bid={},s.bid.raw=this.options.raw,s.bid.fixed=this.data.fixed,s.bid.period=this.data.period,s.bid.hash=this.options.hash,s.bid.value=s.gold,s.bid.address="",await e.propList.setVp(s);this.mode==a.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(s.pid,Object.assign({pid:s.pid,curAddress:s.current.address,curGold:s.gold,status:c.Sale},s.bid)))}return!0}async erase(){var e=this.options.env,t=2<(i=this.options.tx).outputs.length?i.outputs[2].getReturnData():null,i=i.inputs[0],r=await e.propList.getVp(this.data.pid);r&&(t?(t=await e.getExtendTX(i.prevout.hash))&&(t.tx.outputs[i.prevout.index],r.bid={hash:this.options.hash,value:r.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},r.pst=c.Sale,await e.propList.setVp(r,t.tx),this.mode==a.Mempool)&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(r.pid,Object.assign({pid:r.pid,curAddress:r.current.address,curGold:r.gold,status:c.Sale},r.bid))):(r.pst=c.Ready,await e.propList.setVp(r),this.mode==a.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(r.pid))))}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=t.outputs[2].getAddress().toString(),s=await e.propList.getVp(this.data.pid);return s&&(this.mode==a.Block&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(s.pid),e.node.transmit("prop.bid",{status:c.Ready,pid:s.pid,bid:Object.assign({},s.bid),height:this.options.coinbaseHeight})),s.current={hash:i,index:2,address:r},s.height=this.options.coinbaseHeight,s.pst=c.Ready,await e.propList.setVp(s,t)),!0}async unconfirm(){var e,t,i=this.options.env,r=this.options.tx,s=r.inputs[0].prevout,n=await i.getExtendTX(s.hash);return n?(t=(e=n.tx.outputs[s.index]).getReturnData(),(t=await i.propList.getVp(t.pid))&&(t.current={hash:s.hash,index:s.index,address:e.getAddress().toString()},t.height=n.height-1,await i.propList.setVp(t,r)),this.mode==a.Block&&i.node.transmit("prop.bid",{status:c.Delete,pid:t.pid,address:t.current.address,time:this.options.block.time,height:t.height})):this.mode==a.Wallet&&(s=await i.propList.getVp(this.data.pid),await i.propList.delVp(s)),!0}async verify(){var e=this.data,t=this.options.env,i=this.options.tx,s=2<i.outputs.length?i.outputs[2].getReturnData():null,n=await t.propList.getVp(e.pid);if(!n)return"propsale.notExist";switch(this.mode){case a.Mempool:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(t.curHeight+u.BLOCK_DAY>=this.data.period),r(e.cid!=t.network.genesisId),s&&(r.strictEqual(s.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(s.prev.index,i.inputs[0].prevout.index),r.strictEqual(s.pid,e.pid),r.strictEqual(s.oper,o.propExchange),n.bid)){if(n.period<t.curHeight)throw new h(i,"sale order expired","contract",0);if(n.bid.value>=this.data.fixed)throw new h(i,"can not bid on sale order finished","contract",0);if(i.outputs[1].value<=n.bid.value||i.outputs[1].value<=n.gold)throw new h(i,"invalid bid price","contract",0);var c=await t.getTX(n.bid.hash);c&&await t.removeDoubleSpenders(c)}break;case a.Block:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(e.cid!=t.network.genesisId),r.strictEqual(s.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(s.prev.index,i.inputs[0].prevout.index),r.strictEqual(s.pid,e.pid),r.strictEqual(s.oper,o.propExchange),i.outputs[1].value<=n.gold)throw new h(i,"invalid bid price","contract",0)}return!0}isBlockFinal(){var e=this.options.env,t=this.options.tx;return this.data.period<e.curHeight?n.Expired:2<=t.outputs.length&&(t.outputs[1].value>=this.data.fixed||this.data.period==e.curHeight&&t.outputs[1].value>=t.outputs[2].value)?n.Final:n.Waiting}isPreVerify(){var e=this.options.tx;return!!(2<e.outputs.length&&e.outputs[2].getReturnData())}}},function(e,t,i){const r=i(0),s=i(107),{ContractEnvType:n,BlockFinalType:a}=i(5);var o=i(14);const c=i(7),h=i(44).broadcast,u=i(6),l=i(13);e.exports=class extends o{async insert(){var e=this.options.env,t=this.options.tx;switch(this.data.body.dst=t.outputs[1].getAddress().toString(),this.mode){case n.Mempool:try{var i=JSON.parse(this.data.body.content);switch(i.cmd){case"peerdel":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==u.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(s.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._delPeer([i.payload.host,i.payload.an,i.payload.ai]);break;case"peeradd":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==u.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(s.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._addPeer([i.payload.host,i.payload.key,i.payload.an,i.payload.ai])}}catch(e){}break;case n.Wallet:if(e.NotifyList.get(this.data.sn))return;var a=this.data.body.dst,[a,o]=await e.getAccountByAddress(a,t);this.data.account=o,this.data.wid=a,e.emit("notify/receive",this.data),h("notify/receive",this.data),await e.NotifyList.set(this.data.sn,this.data)}return!0}async confirm(){}async unconfirm(){}async erase(){var e=this.options.env;return this.options.tx,this.mode===n.Wallet&&(await e.NotifyList.delete(this.data.sn),e.emit("notify/remove",this.data),h("notify/remove",this.data)),!0}async verify(){var e=this.options.env,t=this.options.tx;return t.getOutputValue()<.1*c.COIN?"Notify.invalidDeposit":2<t.outputs.length?"Notify.invalidFormat":!(this.data.h>e.curHeight)||"Notify.invalidHeight"}isBlockFinal(){var e=this.options.env;return this.data.h<e.curHeight-6?a.Expired:a.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractStatus:n,BlockFinalType:a}=i(5),o=i(37).VerifyError;e.exports=class extends r{async insert(){var e=this.options.env;return this.data.period<e.curHeight?await e.transactionList.delTransContract(this.data,!0):(this.data.current={hash:this.options.hash,index:0},this.data.raw=this.options.raw,await e.transactionList.addTransContract(s.Mempool,this.data)),!0}async erase(){var e=this.options.env;switch(this.mode){case s.Mempool:await e.transactionList.delTransContract(this.data);break;case s.Wallet:await e.transactionList.delTransContract(this.data,!0)}}async verify(){var e=this.options.env,t=this.options.tx;if(this.data.period<e.curHeight)throw new o(t,"transaction contract expired","contract",0);if(e.transactionList.query(this.data.type,this.data.addr)!=n.None)throw new o(t,"Same Address Contract Finded","contract",0);return!0}isBlockFinal(){var e=this.options.env;return this.data.period<e.curHeight?a.Expired:a.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractStatus:n}=i(5),a=i(108);e.exports=class extends r{async confirm(){var e=this.options.env;let t=n.Backed;switch(2==this.data.master&&(t=n.Exchanged),this.mode){case s.Block:var i=e.transactionList.get(this.data.type+"."+this.data.addr);i?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(s.Block,this.data,!0);break;case s.Wallet:(i=e.transactionList.get(this.data.type+"."+this.data.addr))?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(s.Wallet,this.data,!0)}return!0}async verify(){var e=this.options.env;switch(this.mode){case s.Mempool:case s.Block:case s.Wallet:{var t=this.data.master,i=e.transactionList.get(this.data.type+"."+this.data.addr);let r=i.transStatus;return r!==n.Expired&&r!==n.Confirmed&&r!==n.Backed&&r!==n.Exchanged&&(i=new a(e.network.txcheckpoint,i),[,r]=await i.execute(e)),r!==n.Expired&&r!==n.Confirmed&&r!==n.Backed&&r!==n.Exchanged?"ContractPromise.invalidStatus":!(r==n.Expired&&1!=t||r==n.Confirmed&&2!=t||r==n.Backed&&1!=t||r==n.Exchanged&&2!=t)||"ContractPromise.limited"}}}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,VerifyCode:n}=i(5),a=i(153).ErItem,o=i(38),c=i(6),h=i(13),u=i(44).broadcast;e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;if(!(this.data.startHeight=e.curHeight,await e.erList.getEr(this.data.erid))){switch(await e.erList.setEr(this.data,t),this.mode){case s.Wallet:var i=h.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);i&&r&&(this.data.account=r,this.data.wid=i,e.emit("ca/issue",this.data),u("ca/issue",this.data));break;case s.Block:e.node.transmit("ca.issue",this.data),e.node.config.alliancePrivateKey&&(r=o.fromPrivate(Buffer.from(e.node.config.alliancePrivateKey,"hex"),!0,e.network),o.fromPrivate(c.hash256(Buffer.concat([Buffer.from(this.data.source.cid+"-"+this.data.source.uid),r.privateKey]),!0,e.network)).publicKey.toString("hex")==this.data.witness)&&e.node.transmit("ca.issue.alliance",this.data)}return!0}e.logger.warning("ErIssue.conflict",this.data.erid,", height: ",e.curHeight,"mode: ",e.mode,t.txid())}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erList.delEr(this.data,t),this.mode){case s.Wallet:var i=h.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unissue",this.data),u("ca/unissue",this.data);break;case s.Block:e.node.transmit("ca.unissue",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data;e=o.fromPublic(Buffer.from(t.witness,"hex"),e.network);return!!new a(t).verifying(e)||n.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,VerifyCode:n,ContractType:a}=i(5),o=i(154).ErAbolishItem,c=i(38),h=i(44).broadcast,u=i(6),l=i(13);e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;switch(this.data.startHeight=e.curHeight,await e.erAbList.setErAb(this.data,t),this.mode){case s.Wallet:var i=l.fromWitnessPubkeyhash(u.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/abolish",this.data),h("ca/abolish",this.data);break;case s.Block:e.node.transmit("ca.abolish",this.data)}return!0}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erAbList.delErAb(this.data,t),this.mode){case s.Wallet:var i=l.fromWitnessPubkeyhash(u.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unabolish",this.data),h("ca/unabolish",this.data);break;case s.Block:e.node.transmit("ca.unabolish",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data,i=await e.erList.getEr(t.erid);return i&&i.witness==t.witness?t&&t.oper==a.erAbolish&&(i=await e.erAbList.getErAb(t.erid))&&t.abolishHeight>=i.abolishHeight?n.NotExistER:(i=c.fromPublic(Buffer.from(t.witness,"hex"),e.network),!!new o(t).verifying(i)||n.SignatureNotMatch):n.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{VerifyCode:s,ContractEnvType:n}=i(5),a=i(228).EnchancementItem,o=i(38);e.exports=class extends r{async insert(){return!0}async confirm(){var e,t;return this.mode==n.Block&&(e=this.options.env,t=this.options.tx,this.data.enchanceTx=t.txid(),e.enCpList.setEn(this.data),!0)}async unconfirm(){var e,t;return this.mode==n.Block&&(e=this.options.env,t=this.options.tx,e.enCpList.delEn(this.data,t),!0)}async erase(){return!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data,r=e.cpList.getItem(i.to);t=t.outputs[1].getAddress().toString();return r&&r.pubAddress&&r.pubAddress==t&&(r=e.cpList.getItem(i.from))&&r.pubAddress&&r.pubKey?(t=o.fromPublic(Buffer.from(r.pubKey,"hex"),e.network),!!new a(i).verifying(t)||s.SignatureNotMatch):s.NotExistCp}}},function(e,t,i){"use strict";
|
|
454
|
+
*/function r(e,t){this.resolve=e,this.reject=t}function s(){}e.exports=class{constructor(){this.jobs=new Map,this.busy=new Set,this.destroyed=!1}has(e){return this.busy.has(e)}hasPending(e){return this.jobs.has(e)}lock(e,t){return this.destroyed?Promise.reject(new Error("Lock is destroyed.")):null==e||t?Promise.resolve(s):this.busy.has(e)?new Promise((t,i)=>{this.jobs.has(e)||this.jobs.set(e,[]),this.jobs.get(e).push(new r(t,i))}):(this.busy.add(e),Promise.resolve(this.unlock(e)))}unlock(e){const t=this;return function i(){var r,s;!t.destroyed&&t.busy.has(e)&&(t.busy.delete(e),r=t.jobs.get(e))&&(0===r.length&&t.jobs.delete(e),s=r.shift(),0===r.length&&t.jobs.delete(e),t.busy.add(e),s.resolve(i))}}destroy(){if(!this.destroyed){this.destroyed=!0;var e=this.jobs;this.busy=new Map,this.jobs=new Map;for(const t of e.values())for(const e of t)e.reject(new Error("MappedLock was destroyed."))}}}},function(e,t,i){var r=i(14);const s=i(5).ContractEnvType,n=i(37).VerifyError,a=i(151).scItem,o=i(72).verifyData,c=i(0),h=i(44).broadcast;e.exports=class extends r{async confirm(){var e,t;this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,this.data.indate?this.data.indate=this.data.height+Math.max(144,Math.min(52560,this.data.indate)):this.data.indate=this.data.height+4320,t=new a({type:this.data.type,addr:this.data.addr,dst:this.data.dst,height:this.data.height,state:1,ver:1,indate:this.data.indate}),this.data.cls&&(t.options.cls=this.data.cls,this.mode===s.Block)&&"publish"==this.data.cls&&h("sc/publish",t.options),t.do(),await e.scList.addItem(t))}async unconfirm(){this.mode==s.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e8!=i.value||!this.data)throw new n(t,"invalid","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0<e.scList.query([["options.dst",this.data.dst]]).length)throw new n(t,"Contract Register Conflict","another contract already on "+this.data.dst,100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new n(t,"Invalid Smart Contract","Receive address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractState:n}=i(5),a=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.ver+=1,t.list[0].options.type=this.data.type,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==s.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new a(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new a(t,"Contract Not Exists","contract not exists",100);if(e.list[0].options.state!=n.Normal)throw new a(t,"Contract State Error","contract state error",100);if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new a(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractState:n}=i(5),a=i(37).VerifyError;var{}=i(151);const o=i(72).verifyData,c=i(0);e.exports=class extends r{async confirm(){var e,t;this.mode==s.Block&&(e=this.options.env,t=this.options.tx,this.data.dst=t.outputs[1].getAddress().toString(),this.data.height=this.options.coinbaseHeight,1==(t=e.scList.query([["options.dst",this.data.dst]])).list.length)&&(t.list[0].options.state=this.data.state,t.list[0].options.height=this.data.height,t.list[0].do(),await e.scList.addItem(t.list[0]))}async unconfirm(){this.mode==s.Block&&await this.options.env.scList.delItem(this.data)}async verify(){var e=this.options.env,t=this.options.tx,i=t.outputs[1];if(!i||1e5!=i.value||!this.data)throw new a(t,"Invalid Smart Contract","null scRegister data",100);var r=this.data.sig;delete this.data.sig,c.strictEqual(!0,o({data:this.data,sig:r})),r=await e.node.cdb.get("primary");if(0==(e=e.scList.query([["options.dst",this.data.dst]])).list.length)throw new a(t,"Contract Not Exists","contract not exists",100);switch(e.list[0].options.state){case n.Normal:if(this.data.state!=n.Frozen&&this.data.state!=n.Destroy)throw new a(t,"Contract State Error","contract state error",100);break;case n.Frozen:if(this.data.state!=n.Normal&&this.data.state!=n.Destroy)throw new a(t,"Contract State Error","contract state error",100);break;default:throw new a(t,"Contract State Error","contract state error",100)}if(await r.ensureAccount({name:this.data.addr,witness:!0}),(await r.createReceive(this.data.addr,1)).getAddress("string")!=i.getAddress().toString())throw new a(t,"Invalid Smart Contract","dst address error",100);return!0}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractState:n}=i(5),a=i(37).VerifyError,o=i(7),c=i(152),h=i(42);e.exports=class extends r{async onPacking(){var e=this.options.env,t=this.options.tx.hash("hex"),i=await e.node.cdb.get("primary"),r=this.data.$top;let s={derive:[]};var n=await i.getStatusOfSC(t);if(n.txs)for(var a of n.txs)(a=await i.getTX(a))&&s.derive.push(a.tx);else if((n=await this.getContract())&&(n={height:e.curHeight,data:this.data,tx:this.options.tx,contract:n,wallet:i},n=c(n)))if((s=await n.run()).derive&&s.derive.length<o.MAX_PACKING_SIZE){let n=[];for(var u of s.derive)if((u=await(await h.FactoryOfContract({tx:u,env:e})).onPacking()).derive){if(!(s.derive.length+n.length+u.derive.length<o.MAX_PACKING_SIZE))break;n=n.concat(u.derive)}s.derive=s.derive.concat(n),r||await i.setStatusOfSC(t,s.derive.map(e=>e.hash("hex")))}else s.derive=[];return s}async confirm(){var e,t,i;if(this.mode==s.Block)return e=this.options.env,(t=await this.getContract())&&(i=c({data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")}))&&(t.do(),await e.scList.addItem(t),await i.confirm()),!0}async unconfirm(){var e,t,i;if(this.mode==s.Block)return e=this.options.env,(t=await this.getContract())&&(i={data:this.data,tx:this.options.tx,contract:t,wallet:await this.options.env.node.cdb.get("primary")},i=c(i))&&(t.undo(),await e.scList.addItem(t),await i.unconfirm()),!0}async verify(){var e=this.options.env,t=this.options.tx,i=await this.getContract();if(!i)throw new a(t,"invalid","contract not found",100);if(i.options.state!=n.Normal)throw new a(t,"invalid","contract version conflict",100);if(this.data.params.ver&&this.data.params.ver!=i.options.ver)throw new a(t,"invalid","contract version conflict",100);if(i.options.indate<e.curHeight)throw new a(t,"invalid","contract expired",100);return t={data:this.data,tx:t,contract:i,wallet:await e.node.cdb.get("primary")},(i=c(t))?i.verify():"scRun.errorType"}async getContract(){if(0<this.options.tx.outputs.length){var e=this.options.tx.outputs[1].getAddress().toString();if((e=await this.options.env.node.chain.db.getSCList([["options.dst",e]]))&&0<e.list.length)return e.list[0]}return null}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){var e,t,i,r,s,n;return await this.verify()?(e=await super.run(),t=this.options.contract.options.addr,i=this.options.tx.outputs[1].value,r=this.options.wallet,n=this.options.data.params.relay,s=this.options.data.$top||0,n=await r.send({sendafter:!(r=[]),subtractFee:!1,sort:!1,outputs:[{address:n,value:i}],comment:JSON.stringify({$tag:"inner",$top:s+1,oper:"scrun",hash:this.options.tx.hash("hex"),account:t,params:this.options.data.params.params})},t),r.push(n),e.derive=r,e):{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,s=this.options.contract.options.addr;let n=this.options.data.params.sim;n||(n=(a=this.options.tx.inputs[0]).getAddress().toString());var a=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:n,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:a+1,hash:this.options.tx.hash("hex"),account:s})},s);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[],i=this.options.tx.outputs[1].value,r=this.options.wallet,s=this.options.contract.options.addr;let n=this.options.data.params.sim;n||(n=(a=this.options.tx.inputs[0]).getAddress().toString());var a=this.options.data.$top||0;r=await r.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:n,value:i/2}],comment:JSON.stringify({$tag:"inner",$top:a+1,hash:this.options.tx.hash("hex"),account:s})},s);return t.push(r),e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){return await this.verify()?await super.run():{derive:[]}}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){i=i(81);e.exports=class extends i{async run(){if(!await this.verify())return{derive:[]};var e=await super.run(),t=[];let i=this.options.contract;var r=this.options.data.params.oper,s=this.options.wallet,n=i.options.addr;switch(r){case"pubk":{var a,o,c,h=this.options.data.params.addr,u=this.options.data.params.pubk,l=this.options.data.params.partner;"object"==typeof i.options.contacts&&!Array.isArray(i.options.contacts)||(i.options.contacts={}),l&&l.split(",").map(e=>{i.options.contacts[e]||(i.options.contacts[e]={st:0})});let e="";for(a of Object.keys(i.options.contacts))h!=a&&(o=i.options.contacts[a],c=await s.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:a,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:u,m:i.options.m,n:i.options.n,contract:i.options.dst,account:n})},n),t.push(c),o.pubk)&&(e&&(e+=","),e+=o.pubk);e&&(l=await s.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:h,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendpubk",$tag:"inner",hash:this.options.tx.hash("hex"),data:e,contract:i.options.dst,account:n})},n),t.push(l)),i.options.contacts[h]?i.options.contacts[h].pubk||(i.options.contacts[h].pubk=u):i.options.contacts[h]={pubk:u,st:0};break}case"puba":{var p,d=this.options.data.params.addr,f=this.options.data.params.puba;let e=!0;for(p of(i.options.puba=i.options.puba||f,Object.keys(i.options.contacts))){var m=i.options.contacts[p];p==d&&i.options.puba==f&&(m.st=1),1!=m.st&&(e=!1)}i.options.status=e;break}case"sign":if(1==i.options.status){var g,y,v=this.options.data.params.addr;for(g of Object.keys(i.options.contacts))g!=v&&(y=await s.send({sendafter:!1,subtractFee:!1,sort:!1,outputs:[{address:g,value:1e4}],comment:JSON.stringify({oper:"scnotify",type:"mssendtx",$tag:"inner",hash:this.options.tx.hash("hex"),data:this.options.data.params.tx,contract:i.options.dst,account:n})},n),t.push(y))}break;default:return e}return e.derive=t,e}async confirm(){return!0}async unconfirm(){return!0}async verify(){return super.verify()}}},function(e,t,i){var r=i(14);const s=i(5).ContractEnvType,n=i(44).broadcast;e.exports=class extends r{async confirm(){var e;this.mode==s.Wallet&&(e=this.options.tx.outputs[1])&&(this.data.addr=e.getAddress().toString(),this.options.env.emit(this.data.type+"/receive",this.data),n(this.data.type+"/receive",this.data))}async verify(){return!0}}},function(e,t,i){const r=i(0);var s=i(14);const{ContractEnvType:n,PropStatus:a}=i(5);e.exports=class extends s{async confirm(){var e=this.options.env,t=await e.propList.getVp(this.data.ori.pid);return t&&(t.pst=a.Delete,await e.propList.setVp(t),e.mode==n.Block)&&(t={pid:t.pid},e.node.transmit("prop.found",t)),!0}async unconfirm(){var e=this.options.env,t=this.options.tx,i=await e.propList.getVp(this.data.ori.pid);return i&&i.current.hash==t.inputs[0].prevout.hash&&i.current.index==t.inputs[0].prevout.index&&(i.pst=a.Ready,await e.propList.setVp(i)),!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data;return i.ori&&i.ori.pid?e.network.tokenReg.test(i.ori.pid)?"propfound.protected":(e=await e.propList.getVp(i.ori.pid))&&e.pst==a.Ready?(r.strictEqual(e.current.hash,t.inputs[0].prevout.hash),r.strictEqual(e.current.index,t.inputs[0].prevout.index),!0):"propfound.invalidStatus":"propfound.invalidAncestor"}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractType:n}=i(5),a=i(7),o=i(19).opcodes;e.exports=class extends r{async confirm(){return this.options.env,this.options.tx.hash("hex"),this.mode===s.Block&&await this.HandleVoteTrans(!1),!0}async unconfirm(){return this.options.env,this.options.tx,this.mode===s.Block&&await this.HandleVoteTrans(!0),!0}async HandleVoteTrans(e){var t=this.options.env,i=this.options.tx,r=this.options.tx.outputs[0].script.code;if(r[0].value==o.OP_RETURN)try{var s=JSON.parse(Buffer.from(r[1].data).toString());if(s&&s.oper==n.vote)switch(s.type){case"mine":{let r=0;for(var c of i.inputs){var h,u=await t.getExtendTX(c.prevout.hash);u&&t.voteMgr.isIn(u.height)?(h=u.tx.outputs[c.prevout.index])&&h.value?r+=h.value/a.COIN|0:t.logger.warning("Voting: Invalid UTXO Info"):t.logger.warning("Voting: Invalid UTXO Height")}0<r&&await t.voteMgr.calcVote(r,s.ca,e);break}case"oracle":{let r=0;for(var l of i.inputs){var p,d=await t.getExtendTX(l.prevout.hash);d&&t.voteMgr.isIn(d.height)?(p=d.tx.outputs[l.prevout.index])&&p.value?r+=p.value/1e5|0:t.logger.warning("Oracle: Invalid UTXO Info"):t.logger.warning("Oracle: Invalid UTXO Height")}0<r&&await t.voteMgr.calcOracle(r,{k:s.k,v:s.v},e);break}}}catch(r){console.log(r)}}async verify(){return!0}}},function(e,t,i){const r=i(0);var s=i(14);const{BlockFinalType:n,ContractEnvType:a,ContractType:o,PropStatus:c}=i(5),h=i(37).VerifyError,u=i(7);var{}=i(44);i(2);const l=i(31);e.exports=class extends s{async insert(){var e=this.options.env,t=this.options.tx,i=2<t.outputs.length?t.outputs[2].getReturnData():null,s=await e.propList.getVp(this.data.pid);if(s){if(i){if(this.mode==a.Wallet&&s.bid&&(i=await e.getTX(s.bid.hash))&&(i=await e.getWalletsByTX(i)))for(const t of i){var n=await e.get(t);r(n),await n.remove(s.bid.hash)}i=t.outputs[1].value;var o=t.outputs[2].getAddress().toString();i>=this.data.fixed||e.curHeight>=this.data.period&&i>s.gold?(s.pst=c.Sale,s.bid={},s.bid.raw=this.options.raw,s.bid.fixed=this.data.fixed,s.bid.period=this.data.period,s.bid.hash=this.options.hash,s.bid.value=i,s.bid.address=o,await e.propList.setVp(s,t)):(s.pst=c.Sale,s.bid={},s.bid.raw=this.options.raw,s.bid.fixed=this.data.fixed,s.bid.period=this.data.period,s.bid.hash=this.options.hash,s.bid.value=i,s.bid.address=o,await e.propList.setVp(s))}else s.pst=c.Sale,s.bid={},s.bid.raw=this.options.raw,s.bid.fixed=this.data.fixed,s.bid.period=this.data.period,s.bid.hash=this.options.hash,s.bid.value=s.gold,s.bid.address="",await e.propList.setVp(s);this.mode==a.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(s.pid,Object.assign({pid:s.pid,oid:s.oid,cid:s.cid,curAddress:s.current.address,curGold:s.gold,status:c.Sale},s.bid)))}return!0}async erase(){var e=this.options.env,t=2<(i=this.options.tx).outputs.length?i.outputs[2].getReturnData():null,i=i.inputs[0],r=await e.propList.getVp(this.data.pid);r&&(t?(t=await e.getExtendTX(i.prevout.hash))&&(t.tx.outputs[i.prevout.index],r.bid={hash:this.options.hash,value:r.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},r.pst=c.Sale,await e.propList.setVp(r,t.tx),this.mode==a.Mempool)&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(r.pid,Object.assign({pid:r.pid,oid:r.oid,cid:r.cid,curAddress:r.current.address,curGold:r.gold,status:c.Sale},r.bid))):(r.pst=c.Ready,await e.propList.setVp(r),this.mode==a.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(r.pid))))}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=t.outputs[2].getAddress().toString(),s=await e.propList.getVp(this.data.pid);return s&&(this.mode==a.Block&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.delete(s.pid),e.node.transmit("prop.bid",{status:c.Ready,pid:s.pid,bid:Object.assign({},s.bid),height:this.options.coinbaseHeight})),s.current={hash:i,index:2,address:r},s.height=this.options.coinbaseHeight,s.pst=c.Ready,await e.propList.setVp(s,t)),!0}async unconfirm(){var e,t,i=this.options.env,r=this.options.tx,s=r.inputs[0].prevout,n=await i.getExtendTX(s.hash);return n?(t=(e=n.tx.outputs[s.index]).getReturnData(),(t=await i.propList.getVp(t.pid))&&(t.current={hash:s.hash,index:s.index,address:e.getAddress().toString()},t.height=n.height-1,await i.propList.setVp(t,r)),this.mode==a.Block&&i.node.transmit("prop.bid",{status:c.Delete,pid:t.pid,address:t.current.address,time:this.options.block.time,height:t.height})):this.mode==a.Wallet&&(s=await i.propList.getVp(this.data.pid),await i.propList.delVp(s)),!0}async verify(){var e=this.data,t=this.options.env,i=this.options.tx,s=2<i.outputs.length?i.outputs[2].getReturnData():null,n=await t.propList.getVp(e.pid);if(!n)return"propsale.notExist";switch(this.mode){case a.Mempool:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(t.curHeight+u.BLOCK_DAY>=this.data.period),r(e.cid!=t.network.genesisId),s&&(r.strictEqual(s.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(s.prev.index,i.inputs[0].prevout.index),r.strictEqual(s.pid,e.pid),r.strictEqual(s.oper,o.propExchange),n.bid)){if(n.period<t.curHeight)throw new h(i,"sale order expired","contract",0);if(n.bid.value>=this.data.fixed)throw new h(i,"can not bid on sale order finished","contract",0);if(i.outputs[1].value<=n.bid.value||i.outputs[1].value<=n.gold)throw new h(i,"invalid bid price","contract",0);var c=await t.getTX(n.bid.hash);c&&await t.removeDoubleSpenders(c)}break;case a.Block:if(r.strictEqual(e.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(e.prev.index,i.inputs[0].prevout.index),r(e.cid!=t.network.genesisId),r.strictEqual(s.prev.hash,i.inputs[0].prevout.hash),r.strictEqual(s.prev.index,i.inputs[0].prevout.index),r.strictEqual(s.pid,e.pid),r.strictEqual(s.oper,o.propExchange),i.outputs[1].value<=n.gold)throw new h(i,"invalid bid price","contract",0)}return!0}isBlockFinal(){var e=this.options.env,t=this.options.tx;return this.data.period<e.curHeight?n.Expired:2<=t.outputs.length&&(t.outputs[1].value>=this.data.fixed||this.data.period==e.curHeight&&t.outputs[1].value>=t.outputs[2].value)?n.Final:n.Waiting}isPreVerify(){var e=this.options.tx;return!!(2<e.outputs.length&&e.outputs[2].getReturnData())}}},function(e,t,i){const r=i(0),s=i(107),{ContractEnvType:n,BlockFinalType:a}=i(5);var o=i(14);const c=i(7),h=i(44).broadcast,u=i(6),l=i(13);e.exports=class extends o{async insert(){var e=this.options.env,t=this.options.tx;switch(this.data.body.dst=t.outputs[1].getAddress().toString(),this.mode){case n.Mempool:try{var i=JSON.parse(this.data.body.content);switch(i.cmd){case"peerdel":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==u.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(s.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._delPeer([i.payload.host,i.payload.an,i.payload.ai]);break;case"peeradd":r(this.data.body.dst==e.node.config.notifyAddress),r(l.fromString(this.data.body.dst).hash.toString("hex")==u.hash160(Buffer.from(i.pub,"hex")).toString("hex")),r(s.verifyObj(i.payload,i.sig,i.pub)),await e.node.rpc._addPeer([i.payload.host,i.payload.key,i.payload.an,i.payload.ai])}}catch(e){}break;case n.Wallet:if(e.NotifyList.get(this.data.sn))return;var a=this.data.body.dst,[a,o]=await e.getAccountByAddress(a,t);this.data.account=o,this.data.wid=a,e.emit("notify/receive",this.data),h("notify/receive",this.data),await e.NotifyList.set(this.data.sn,this.data)}return!0}async confirm(){}async unconfirm(){}async erase(){var e=this.options.env;return this.options.tx,this.mode===n.Wallet&&(await e.NotifyList.delete(this.data.sn),e.emit("notify/remove",this.data),h("notify/remove",this.data)),!0}async verify(){var e=this.options.env,t=this.options.tx;return t.getOutputValue()<.1*c.COIN?"Notify.invalidDeposit":2<t.outputs.length?"Notify.invalidFormat":!(this.data.h>e.curHeight)||"Notify.invalidHeight"}isBlockFinal(){var e=this.options.env;return this.data.h<e.curHeight-6?a.Expired:a.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractStatus:n,BlockFinalType:a}=i(5),o=i(37).VerifyError;e.exports=class extends r{async insert(){var e=this.options.env;return this.data.period<e.curHeight?await e.transactionList.delTransContract(this.data,!0):(this.data.current={hash:this.options.hash,index:0},this.data.raw=this.options.raw,await e.transactionList.addTransContract(s.Mempool,this.data)),!0}async erase(){var e=this.options.env;switch(this.mode){case s.Mempool:await e.transactionList.delTransContract(this.data);break;case s.Wallet:await e.transactionList.delTransContract(this.data,!0)}}async verify(){var e=this.options.env,t=this.options.tx;if(this.data.period<e.curHeight)throw new o(t,"transaction contract expired","contract",0);if(e.transactionList.query(this.data.type,this.data.addr)!=n.None)throw new o(t,"Same Address Contract Finded","contract",0);return!0}isBlockFinal(){var e=this.options.env;return this.data.period<e.curHeight?a.Expired:a.Waiting}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,ContractStatus:n}=i(5),a=i(108);e.exports=class extends r{async confirm(){var e=this.options.env;let t=n.Backed;switch(2==this.data.master&&(t=n.Exchanged),this.mode){case s.Block:var i=e.transactionList.get(this.data.type+"."+this.data.addr);i?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(s.Block,this.data,!0);break;case s.Wallet:(i=e.transactionList.get(this.data.type+"."+this.data.addr))?(i.transStatus=t,await e.transactionList.saveContract(i,!0)):await e.transactionList.addTransContract(s.Wallet,this.data,!0)}return!0}async verify(){var e=this.options.env;switch(this.mode){case s.Mempool:case s.Block:case s.Wallet:{var t=this.data.master,i=e.transactionList.get(this.data.type+"."+this.data.addr);let r=i.transStatus;return r!==n.Expired&&r!==n.Confirmed&&r!==n.Backed&&r!==n.Exchanged&&(i=new a(e.network.txcheckpoint,i),[,r]=await i.execute(e)),r!==n.Expired&&r!==n.Confirmed&&r!==n.Backed&&r!==n.Exchanged?"ContractPromise.invalidStatus":!(r==n.Expired&&1!=t||r==n.Confirmed&&2!=t||r==n.Backed&&1!=t||r==n.Exchanged&&2!=t)||"ContractPromise.limited"}}}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,VerifyCode:n}=i(5),a=i(153).ErItem,o=i(38),c=i(6),h=i(13),u=i(44).broadcast;e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;if(!(this.data.startHeight=e.curHeight,await e.erList.getEr(this.data.erid))){switch(await e.erList.setEr(this.data,t),this.mode){case s.Wallet:var i=h.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);i&&r&&(this.data.account=r,this.data.wid=i,e.emit("ca/issue",this.data),u("ca/issue",this.data));break;case s.Block:e.node.transmit("ca.issue",this.data),e.node.config.alliancePrivateKey&&(r=o.fromPrivate(Buffer.from(e.node.config.alliancePrivateKey,"hex"),!0,e.network),o.fromPrivate(c.hash256(Buffer.concat([Buffer.from(this.data.source.cid+"-"+this.data.source.uid),r.privateKey]),!0,e.network)).publicKey.toString("hex")==this.data.witness)&&e.node.transmit("ca.issue.alliance",this.data)}return!0}e.logger.warning("ErIssue.conflict",this.data.erid,", height: ",e.curHeight,"mode: ",e.mode,t.txid())}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erList.delEr(this.data,t),this.mode){case s.Wallet:var i=h.fromWitnessPubkeyhash(c.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unissue",this.data),u("ca/unissue",this.data);break;case s.Block:e.node.transmit("ca.unissue",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data;e=o.fromPublic(Buffer.from(t.witness,"hex"),e.network);return!!new a(t).verifying(e)||n.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{ContractEnvType:s,VerifyCode:n,ContractType:a}=i(5),o=i(154).ErAbolishItem,c=i(38),h=i(44).broadcast,u=i(6),l=i(13);e.exports=class extends r{async insert(){return!0}async confirm(){var e=this.options.env,t=this.options.tx;switch(this.data.startHeight=e.curHeight,await e.erAbList.setErAb(this.data,t),this.mode){case s.Wallet:var i=l.fromWitnessPubkeyhash(u.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/abolish",this.data),h("ca/abolish",this.data);break;case s.Block:e.node.transmit("ca.abolish",this.data)}return!0}async unconfirm(){var e=this.options.env,t=this.options.tx;switch(e.erAbList.delErAb(this.data,t),this.mode){case s.Wallet:var i=l.fromWitnessPubkeyhash(u.hash160(Buffer.from(this.data.witness,"hex")),e.network),[i,r]=await e.getAccountByAddress(i,t);this.data.account=r,this.data.wid=i,e.emit("ca/unabolish",this.data),h("ca/unabolish",this.data);break;case s.Block:e.node.transmit("ca.unabolish",this.data)}return!0}async erase(){return!0}async verify(){var e=this.options.env,t=this.data,i=await e.erList.getEr(t.erid);return i&&i.witness==t.witness?t&&t.oper==a.erAbolish&&(i=await e.erAbList.getErAb(t.erid))&&t.abolishHeight>=i.abolishHeight?n.NotExistER:(i=c.fromPublic(Buffer.from(t.witness,"hex"),e.network),!!new o(t).verifying(i)||n.SignatureNotMatch):n.SignatureNotMatch}}},function(e,t,i){var r=i(14);const{VerifyCode:s,ContractEnvType:n}=i(5),a=i(228).EnchancementItem,o=i(38);e.exports=class extends r{async insert(){return!0}async confirm(){var e,t;return this.mode==n.Block&&(e=this.options.env,t=this.options.tx,this.data.enchanceTx=t.txid(),e.enCpList.setEn(this.data),!0)}async unconfirm(){var e,t;return this.mode==n.Block&&(e=this.options.env,t=this.options.tx,e.enCpList.delEn(this.data,t),!0)}async erase(){return!0}async verify(){var e=this.options.env,t=this.options.tx,i=this.data,r=e.cpList.getItem(i.to);t=t.outputs[1].getAddress().toString();return r&&r.pubAddress&&r.pubAddress==t&&(r=e.cpList.getItem(i.from))&&r.pubAddress&&r.pubKey?(t=o.fromPublic(Buffer.from(r.pubKey,"hex"),e.network),!!new a(i).verifying(t)||s.SignatureNotMatch):s.NotExistCp}}},function(e,t,i){"use strict";
|
|
455
455
|
/*!
|
|
456
456
|
* TXRecord.js
|
|
457
457
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|
|
@@ -1690,7 +1690,7 @@ object-assign
|
|
|
1690
1690
|
* vary
|
|
1691
1691
|
* Copyright(c) 2014-2017 Douglas Christopher Wilson
|
|
1692
1692
|
* MIT Licensed
|
|
1693
|
-
*/e.exports=function(e,t){if(!e||!e.getHeader||!e.setHeader)throw new TypeError("res argument is required");var i=e.getHeader("Vary")||"";(i=s(Array.isArray(i)?i.join(", "):String(i),t))&&e.setHeader("Vary",i)},e.exports.append=s;var r=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function s(e,t){if("string"!=typeof e)throw new TypeError("header argument is required");if(!t)throw new TypeError("field argument is required");for(var i=Array.isArray(t)?t:n(String(t)),s=0;s<i.length;s++)if(!r.test(i[s]))throw new TypeError("field argument contains an invalid header name");if("*"===e)return e;var a=e,o=n(e.toLowerCase());if(-1!==i.indexOf("*")||-1!==o.indexOf("*"))return"*";for(var c=0;c<i.length;c++){var h=i[c].toLowerCase();-1===o.indexOf(h)&&(o.push(h),a=a?a+", "+i[c]:i[c])}return a}function n(e){for(var t=0,i=[],r=0,s=0,n=e.length;s<n;s++)switch(e.charCodeAt(s)){case 32:r===t&&(r=t=s+1);break;case 44:i.push(e.substring(r,t)),r=t=s+1;break;default:t=s+1}return i.push(e.substring(r,t)),i}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uServer=void 0;var r=i(93);const s=i(664),n=i(762),a=(0,r.default)("engine:uws");class o extends s.BaseServer{init(){}cleanup(){}prepare(e,t){e.method=e.getMethod().toUpperCase();var i=new URLSearchParams(e.getQuery());e._query=Object.fromEntries(i.entries()),e.headers={},e.forEach((t,i)=>{e.headers[t]=i}),e.connection={remoteAddress:Buffer.from(t.getRemoteAddressAsText()).toString()},t.onAborted(()=>{a("response has been aborted")})}createTransport(e,t){return new n.default[e](t)}attach(e,t={}){var i=(t.path||"/engine.io").replace(/\/$/,"")+"/";e.any(i,this.handleRequest.bind(this)).ws(i,{compression:t.compression,idleTimeout:t.idleTimeout,maxBackpressure:t.maxBackpressure,maxPayloadLength:this.opts.maxHttpBufferSize,upgrade:this.handleUpgrade.bind(this),open:e=>{(e.transport.socket=e).transport.writable=!0,e.transport.emit("drain")},message:(e,t,i)=>{e.transport.onData(i?t:Buffer.from(t).toString())},close:(e,t,i)=>{e.transport.onClose(t,i)}})}handleRequest(e,t){a('handling "%s" http request "%s"',t.getMethod(),t.getUrl()),this.prepare(t,e),t.res=e;const i=(i,r)=>{void 0!==i?(this.emit("connection_error",{req:t,code:i,message:s.Server.errorMessages[i],context:r}),this.abortRequest(t.res,i,r)):t._query.sid?(a("setting new request for existing client"),this.clients[t._query.sid].transport.onRequest(t)):this.handshake(t._query.transport,t,(t,i)=>this.abortRequest(e,t,i))};this.corsMiddleware?(t.res=new c(e),this.corsMiddleware.call(null,t,t.res,()=>{this.verify(t,!1,i)})):this.verify(t,!1,i)}handleUpgrade(e,t,i){a("on upgrade"),this.prepare(t,e),t.res=e,this.verify(t,!0,async(r,n)=>{if(r)this.emit("connection_error",{req:t,code:r,message:s.Server.errorMessages[r],context:n}),this.abortRequest(e,r,n);else{let s;if(r=t._query.sid)(n=this.clients[r])?n.upgrading?(a("transport has already been trying to upgrade"),e.close()):n.upgraded?(a("transport had already been upgraded"),e.close()):(a("upgrading existing transport"),s=this.createTransport(t._query.transport,t),n.maybeUpgrade(s)):(a("upgrade attempt for closed client"),e.close());else if(!(s=await this.handshake(t._query.transport,t,(t,i)=>this.abortRequest(e,t,i))))return;e.upgrade({transport:s},t.getHeader("sec-websocket-key"),t.getHeader("sec-websocket-protocol"),t.getHeader("sec-websocket-extensions"),i)}})}abortRequest(e,t,i){var r=t===s.Server.errors.FORBIDDEN?"403 Forbidden":"400 Bad Request";i=i&&i.message?i.message:s.Server.errorMessages[t];e.writeStatus(r),e.writeHeader("Content-Type","application/json"),e.end(JSON.stringify({code:t,message:i}))}}t.uServer=o;class c{constructor(e){this.res=e,this.statusWritten=!1,this.headers=[]}set statusCode(e){this.writeStatus(200===e?"200 OK":"204 No Content")}setHeader(e,t){this.writeHeader(e,t)}getHeader(){}writeStatus(e){this.res.writeStatus(e),this.statusWritten=!0,this.writeBufferedHeaders()}writeHeader(e,t){"Content-Length"!==e&&(this.statusWritten?this.res.writeHeader(e,t):this.headers.push([e,t]))}writeBufferedHeaders(){this.headers.forEach(([e,t])=>{this.res.writeHeader(e,t)})}end(e){this.statusWritten||this.writeBufferedHeaders(),this.res.end(e)}onData(e){this.res.onData(e)}onAborted(e){this.res.onAborted(e)}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(763);i=i(764);t.default={polling:r.Polling,websocket:i.WebSocket}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Polling=void 0;var r=i(315),s=i(174);const n=i(623),a=(0,i(93).default)("engine:polling"),o={gzip:s.createGzip,deflate:s.createDeflate};class c extends r.Transport{constructor(e){super(e),this.closeTimeout=3e4}get name(){return"polling"}get supportsFraming(){return!1}onRequest(e){var t=e.res;"get"===e.getMethod()?this.onPollRequest(e,t):"post"===e.getMethod()?this.onDataRequest(e,t):(t.writeStatus("500 Internal Server Error"),t.end())}onPollRequest(e,t){this.req?(a("request overlap"),this.onError("overlap from client"),t.writeStatus("500 Internal Server Error"),t.end()):(a("setting request"),this.req=e,this.res=t,e.cleanup=()=>{this.req=this.res=null},t.onAborted(()=>{this.writable=!1,this.onError("poll connection closed prematurely")}),this.writable=!0,this.emit("drain"),this.writable&&this.shouldClose&&(a("triggering empty send to append close packet"),this.send([{type:"noop"}])))}onDataRequest(e,t){if(this.dataReq)this.onError("data request overlap from client"),t.writeStatus("500 Internal Server Error"),t.end();else{const s=Number(e.headers["content-length"]);if(s)if(s>this.maxHttpBufferSize)this.onError("payload too large"),t.writeStatus("413 Payload Too Large").end();else{if("application/octet-stream"===e.headers["content-type"]&&4===this.protocol)return this.onError("invalid content");this.dataReq=e,this.dataRes=t;let n,a=0;var i,r={"Content-Type":"text/html"};for(i in this.headers(e,r),r)t.writeHeader(i,String(r[i]));const o=e=>{this.onData(e.toString()),this.onDataRequestCleanup(),t.end("ok")};t.onAborted(()=>{this.onDataRequestCleanup(),this.onError("data request connection closed prematurely")}),t.onData((e,i)=>{var r=a+e.byteLength;if(r>s)this.onError("content-length mismatch"),t.close();else{if(!n){if(i)return void o(Buffer.from(e));n=Buffer.allocUnsafe(s)}if(Buffer.from(e).copy(n,a),i)return r!=s?(this.onError("content-length mismatch"),t.writeStatus("400 Content-Length Mismatch").end(),void this.onDataRequestCleanup()):void o(n);a=r}})}else this.onError("content-length header required"),t.writeStatus("411 Length Required").end()}}onDataRequestCleanup(){this.dataReq=this.dataRes=null}onData(e){a('received "%s"',e);var t=e=>{if("close"===e.type)return a("got xhr close packet"),this.onClose(),!1;this.onPacket(e)};3===this.protocol?this.parser.decodePayload(e,t):this.parser.decodePayload(e).forEach(t)}onClose(){this.writable&&this.send([{type:"noop"}]),super.onClose()}send(e){this.writable=!1,this.shouldClose&&(a("appending close packet to payload"),e.push({type:"close"}),this.shouldClose(),this.shouldClose=null);var t=t=>{var i=e.some(e=>e.options&&e.options.compress);this.write(t,{compress:i})};3===this.protocol?this.parser.encodePayload(e,this.supportsBinary,t):this.parser.encodePayload(e,t)}write(e,t){a('writing "%s"',e),this.doWrite(e,t,()=>{this.req.cleanup()})}doWrite(e,t,i){var r="string"==typeof e;const s={"Content-Type":r?"text/plain; charset=UTF-8":"application/octet-stream"},a=e=>{this.headers(this.req,s),Object.keys(s).forEach(e=>{this.res.writeHeader(e,String(s[e]))}),this.res.end(e),i()};if(this.httpCompression&&t.compress)if((r?Buffer.byteLength(e):e.length)<this.httpCompression.threshold)a(e);else{const t=n(this.req).encodings(["gzip","deflate"]);t?this.compress(e,t,(e,r)=>{e?(this.res.writeStatus("500 Internal Server Error"),this.res.end(),i(e)):(s["Content-Encoding"]=t,a(r))}):a(e)}else a(e)}compress(e,t,i){a("compressing");const r=[];let s=0;o[t](this.httpCompression).on("error",i).on("data",(function(e){r.push(e),s+=e.length})).on("end",(function(){i(null,Buffer.concat(r,s))})).end(e)}doClose(e){let t;a("closing");var i=()=>{clearTimeout(t),e(),this.onClose()};this.writable?(a("transport writable - closing right away"),this.send([{type:"close"}]),i()):this.discarded?(a("transport discarded - closing right away"),i()):(a("transport not writable - buffering orderly close"),this.shouldClose=i,t=setTimeout(i,this.closeTimeout))}headers(e,t){t=t||{};var i=e.headers["user-agent"];return i&&(~i.indexOf(";MSIE")||~i.indexOf("Trident/"))&&(t["X-XSS-Protection"]="0"),this.emit("headers",t,e),t}}t.Polling=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebSocket=void 0;var r=i(315);const s=(0,i(93).default)("engine:ws");class n extends r.Transport{constructor(e){super(e),this.writable=!1,this.perMessageDeflate=null}get name(){return"websocket"}get handlesUpgrades(){return!0}get supportsFraming(){return!0}send(e){var t,i=e.shift();void 0===i?(this.writable=!0,this.emit("drain")):(i.options&&i.options.compress,t=t=>{var i="string"!=typeof t,r=this.perMessageDeflate&&Buffer.byteLength(t)>this.perMessageDeflate.threshold;s('writing "%s"',t),this.writable=!1,this.socket.send(t,i,r),this.send(e)},i.options&&"string"==typeof i.options.wsPreEncoded?t(i.options.wsPreEncoded):this.parser.encodePacket(i,this.supportsBinary,t))}doClose(e){s("closing"),e&&e(),this.socket.close()}}t.WebSocket=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Client=void 0;const r=i(53);var s=i(93);const n=i(43),a=s("socket.io:client");t.Client=class{constructor(e,t){this.sockets=new Map,this.nsps=new Map,this.server=e,this.conn=t,this.encoder=e.encoder,this.decoder=new e._parser.Decoder,this.id=t.id,this.setup()}get request(){return this.conn.request}setup(){this.onclose=this.onclose.bind(this),this.ondata=this.ondata.bind(this),this.onerror=this.onerror.bind(this),this.ondecoded=this.ondecoded.bind(this),this.decoder.on("decoded",this.ondecoded),this.conn.on("data",this.ondata),this.conn.on("error",this.onerror),this.conn.on("close",this.onclose),this.connectTimeout=setTimeout(()=>{0===this.nsps.size?(a("no namespace joined yet, close the client"),this.close()):a("the client has already joined a namespace, nothing to do")},this.server._connectTimeout)}connect(e,t={}){if(this.server._nsps.has(e))return a("connecting to namespace %s",e),this.doConnect(e,t);this.server._checkNamespace(e,t,i=>{i?this.doConnect(e,t):(a("creation of namespace %s was denied",e),this._packet({type:r.PacketType.CONNECT_ERROR,nsp:e,data:{message:"Invalid namespace"}}))})}doConnect(e,t){const i=this.server.of(e),r=i._add(this,t,()=>{this.sockets.set(r.id,r),this.nsps.set(i.name,r),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)})}_disconnect(){for(const e of this.sockets.values())e.disconnect();this.sockets.clear(),this.close()}_remove(e){var t;this.sockets.has(e.id)?(t=this.sockets.get(e.id).nsp.name,this.sockets.delete(e.id),this.nsps.delete(t)):a("ignoring remove for %s",e.id)}close(){"open"===this.conn.readyState&&(a("forcing transport close"),this.conn.close(),this.onclose("forced server close"))}_packet(e,t={}){"open"!==this.conn.readyState?a("ignoring packet write %j",e):(e=t.preEncoded?e:this.encoder.encode(e),this.writeToEngine(e,t))}writeToEngine(e,t){if(t.volatile&&!this.conn.transport.writable)a("volatile packet is discarded since the transport is not currently writable");else for(const i of Array.isArray(e)?e:[e])this.conn.write(i,t)}ondata(e){try{this.decoder.add(e)}catch(e){a("invalid packet format"),this.onerror(e)}}ondecoded(e){let t,i;var s;i=3===this.conn.protocol?(t=(s=n.parse(e.nsp,!0)).pathname,s.query):(t=e.nsp,e.data);const o=this.nsps.get(t);o||e.type!==r.PacketType.CONNECT?o&&e.type!==r.PacketType.CONNECT&&e.type!==r.PacketType.CONNECT_ERROR?process.nextTick((function(){o._onpacket(e)})):(a("invalid state (packet type: %s)",e.type),this.close()):this.connect(t,i)}onerror(e){for(const t of this.sockets.values())t._onerror(e);this.conn.close()}onclose(e){a("client close with reason %s",e),this.destroy();for(const t of this.sockets.values())t._onclose(e);this.sockets.clear(),this.decoder.destroy()}destroy(){this.conn.removeListener("data",this.ondata),this.conn.removeListener("error",this.onerror),this.conn.removeListener("close",this.onclose),this.decoder.removeListener("decoded",this.ondecoded),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParentNamespace=void 0;const r=i(674);class s extends r.Namespace{constructor(e){super(e,"/_"+s.count++),this.children=new Set}_initAdapter(){this.adapter={broadcast:(e,t)=>{this.children.forEach(i=>{i.adapter.broadcast(e,t)})}}}emit(e,...t){return this.children.forEach(i=>{i.emit(e,...t)}),!0}createChild(e){const t=new r.Namespace(this.server,e);return t._fns=this._fns.slice(0),this.listeners("connect").forEach(e=>t.on("connect",e)),this.listeners("connection").forEach(e=>t.on("connection",e)),this.children.add(t),this.server._nsps.set(e,t),t}fetchSockets(){throw new Error("fetchSockets() is not supported on parent namespaces")}}(t.ParentNamespace=s).count=0},function(e,t,i){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.serveFile=t.restoreAdapter=t.patchAdapter=void 0;const s=i(676),n=i(88),a=(0,r(i(93)).default)("socket.io:adapter-uws"),{addAll:o,del:c,broadcast:h}=s.Adapter.prototype;function u(e,t,i,r){const s=t.conn.id,n=t.conn.transport.socket;i&&(a("subscribe connection %s to topic %s",s,e),n.subscribe(e)),r.forEach(t=>{a("subscribe connection %s to topic %s",s,t=e+""+t),n.subscribe(t)})}t.patchAdapter=function(e){s.Adapter.prototype.addAll=function(e,t){const i=!this.sids.has(e),r=(o.call(this,e,t),this.nsp.sockets.get(e));r&&("websocket"===r.conn.transport.name?u(this.nsp.name,r,i,t):i&&r.conn.on("upgrade",()=>{var t=this.sids.get(e);t&&u(this.nsp.name,r,i,t)}))},s.Adapter.prototype.del=function(e,t){var i;c.call(this,e,t),(e=this.nsp.sockets.get(e))&&"websocket"===e.conn.transport.name&&(i=e.conn.id,e=e.conn.transport.socket,t=this.nsp.name+""+t,a("unsubscribe connection %s from topic %s",i,t),e.unsubscribe(t))},s.Adapter.prototype.broadcast=function(t,i){if(i.rooms.size<=1&&0===i.except.size){var r=i.flags||{};const s={preEncoded:!0,volatile:r.volatile,compress:r.compress},n=(t.nsp=this.nsp.name,this.encoder.encode(t)),o=0===i.rooms.size?this.nsp.name:this.nsp.name+""+i.rooms.keys().next().value;a("fast publish to %s",o),n.forEach(t=>{var i="string"!=typeof t;e.publish(o,i?t:"4"+t,i)}),this.apply(i,e=>{"websocket"!==e.conn.transport.name&&e.client.writeToEngine(n,s)})}else h.call(this,t,i)}},t.restoreAdapter=function(){s.Adapter.prototype.addAll=o,s.Adapter.prototype.del=c,s.Adapter.prototype.broadcast=h};t.serveFile=function(e,t){const i=(0,n.statSync)(t).size,r=(0,n.createReadStream)(t),s=()=>!r.destroyed&&r.destroy();e.onAborted(s),r.on("data",t=>{const s=(e=>{var{buffer:e,byteOffset:t,byteLength:i}=e;return e.slice(t,t+i)})(t),n=e.getWriteOffset();var[t,a]=e.tryEnd(s,i);a||t||(r.pause(),e.onWritable(t=>{var[t,a]=e.tryEnd(s.slice(t-n),i);return!a&&t&&r.resume(),t}))}).on("error",e=>{throw s(),e}).on("end",s)}},function(e){e.exports=JSON.parse('{"name":"socket.io","version":"4.5.4","description":"node.js realtime framework server","keywords":["realtime","framework","websocket","tcp","events","socket","io"],"files":["dist/","client-dist/","wrapper.mjs","!**/*.tsbuildinfo"],"directories":{"doc":"docs/","example":"example/","lib":"lib/","test":"test/"},"type":"commonjs","main":"./dist/index.js","exports":{"import":"./wrapper.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"},"types":"./dist/index.d.ts","license":"MIT","repository":{"type":"git","url":"git://github.com/socketio/socket.io"},"scripts":{"compile":"rimraf ./dist && tsc","test":"npm run format:check && npm run compile && npm run test:types && npm run test:unit","test:types":"tsd","test:unit":"nyc mocha --require ts-node/register --reporter spec --slow 200 --bail --timeout 10000 test/index.ts","format:check":"prettier --check \\"lib/**/*.ts\\" \\"test/**/*.ts\\"","format:fix":"prettier --write \\"lib/**/*.ts\\" \\"test/**/*.ts\\"","prepack":"npm run compile"},"dependencies":{"accepts":"~1.3.4","base64id":"~2.0.0","debug":"~4.3.2","engine.io":"~6.2.1","socket.io-adapter":"~2.4.0","socket.io-parser":"~4.2.1"},"devDependencies":{"@types/mocha":"^9.0.0","expect.js":"0.3.1","mocha":"^10.0.0","nyc":"^15.1.0","prettier":"^2.3.2","rimraf":"^3.0.2","socket.io-client":"4.5.4","socket.io-client-v2":"npm:socket.io-client@^2.4.0","superagent":"^8.0.0","supertest":"^6.1.6","ts-node":"^10.2.1","tsd":"^0.21.0","typescript":"^4.4.2","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.0.0"},"contributors":[{"name":"Guillermo Rauch","email":"rauchg@gmail.com"},{"name":"Arnout Kazemier","email":"info@3rd-eden.com"},{"name":"Vladimir Dronnikov","email":"dronnikov@gmail.com"},{"name":"Einar Otto Stangvik","email":"einaros@gmail.com"}],"engines":{"node":">=10.0.0"},"tsd":{"directory":"test"}}')},function(e,t,i){const r=i(0);e.exports=class{constructor(e){this.keyLimit=100,this.bodyLimit=20<<20,this.contentType=null,this.timeout=1e4,e&&this.fromOptions(e)}fromOptions(e){return r(e),null!=e.keyLimit&&(r("number"==typeof e.keyLimit),this.keyLimit=e.keyLimit),null!=e.bodyLimit&&(r("number"==typeof e.bodyLimit),this.bodyLimit=e.bodyLimit),null!=e.contentType&&(r("string"==typeof e.contentType),this.contentType=e.contentType),this}}},function(e,t,i){const r=i(679),s=i(625).StringDecoder;e.exports=async function(e,t){let i=Object.create(null);if("GET"!==e.method){let h=e.contentType;if("bin"!==(h=t.contentType?t.contentType:h)){var n=await(a=e,o="utf8",c=t,new Promise((e,t)=>{{var i=a,r=c,n=e,h=t;const u=new s(o);let l=!1,p=0,d="";const f=()=>{i.removeListener("data",m),i.removeListener("error",g),i.removeListener("end",y),null!=v&&(v=null,clearTimeout(v))},m=e=>{p+=e.length,l=!0,p>r.bodyLimit?h(new Error("Request body overflow.")):d+=u.write(e)},g=e=>{f(),h(e)},y=()=>{f(),n(l?d:null)};let v=setTimeout(()=>{v=null,f(),h(new Error("Request body timed out."))},r.timeout);i.on("data",m),i.on("error",g),i.on("end",y)}}));if(n)switch(h){case"json":if(!(i=JSON.parse(n))||"object"!=typeof i||Array.isArray(i))throw new Error("JSON body must be an object.");break;case"form":i=r.parsePairs(n,t.keyLimit)}}}var a,o,c;return i}},function(e,t,i){const{generateKey:r,verifyObj:s}=i(72),n=i(67),a=i(6);e.exports=class{constructor(e){this.wdb=e}async call(e,t,i){try{var o,c=t.body.sig,h=n.getHmac(t.options.cid||"",this.wdb.keys.hmacSalt).token,u=r(a.hash256(Buffer.from(h)));if(!this.wdb.options.devMode&&!s({method:t.body.method,params:t.body.params,cid:t.body.cid,wid:t.body.wid},c,u.public))return o={result:null,code:404,error:{type:"HmacError",message:"Verify Error"}},i.send(404,o,"json"),{interrupt:!0,result:null};if(!(t.options.auth&&t.options.authWid==t.options.wid||(this.wdb.options.devMode||await this.wdb.auth(t.options.cid,t.options.token),t.body.method&&"wallet.create"===t.body.method))){var l=await this.wdb.get(t.options.wid);if(!l)return i.send(404,{result:null,code:404,error:{type:"HmacError",message:"Not Found Wallet"}},"json"),{interrupt:!0,result:null};this.wdb.logger.info("Successful auth for %s on %s.",t.options.cid,t.options.wid),t.options.auth=!0,t.options.authWid=t.options.wid,t.wallet=l}return{interrupt:!1}}catch(e){return this.wdb.logger.info("Auth failure for %s on %s: %s.",t.options.cid,t.options.wid,e.message),i.send(403,{result:null,code:403,error:{type:"HmacError",message:"Hmac Auth failure."}},"json"),{interrupt:!0,result:null}}}}},function(e,t){e.exports=class{async call(e,t,i){return e.node.config.devMode||e.node.acl.canAccess(t.body.method,t.options.cid)?{interrupt:!1}:(i.send(407,{result:null,code:407,error:{type:"ACLError",message:"TerminalNo Authentication Required."}},"json"),{interrupt:!0,result:null})}}},function(e,t){e.exports=class{constructor(e,t){this.routes=e,this.openapi=t}async call(e,t,i){switch(t.options.mode){case"web":if(0===t.pathname.indexOf("/public/")){var r=this.routes.getHandlers(t.method);if(!r)return{interrupt:!0,result:null};for(const n of r){var s=n.match(t.pathname);if(s){t.params=s;try{return{interrupt:!0,result:{code:0,error:null,result:await n.call(t,i)}}}catch(e){i.error(500,e)}return{interrupt:!0,result:null}}}}else if(r=this.openapi[t.body.method]){try{return{interrupt:!0,result:{code:0,error:null,result:await e.node.conn_s2local.execute(r.name,t.body.params,t)}}}catch(e){i.error(500,e)}return{interrupt:!0,result:null}}break;case"ws":if(r=this.openapi[t.body.method])return{interrupt:!0,result:{code:0,error:null,result:await e.node.conn_s2local.execute(r.name,t.body.params,t)}}}return{interrupt:!1}}}},function(e,t,i){const r=i(0),s=i(2),n=i(6),a=i(158);e.exports=class{constructor(e){r(e,"Basic auth requires options."),this.user=e.username,this.pass=e.password,this.realm=e.realm,null!=this.user&&(r("string"==typeof this.user),r(this.user.length<=255,"Username too long."),r(s.isAscii(this.user),"Username must be ASCII."),this.user=n.hash256(Buffer.from(this.user,"ascii"))),r("string"==typeof this.pass),r(this.pass.length<=255,"Password too long."),r(s.isAscii(this.pass),"Password must be ASCII."),this.pass=n.hash256(Buffer.from(this.pass,"ascii")),this.realm||(this.realm="server"),r("string"==typeof this.realm)}fail(e){e.setHeader("WWW-Authenticate",`Basic realm="${this.realm}"`),e.send(401,{result:null,code:401,error:{type:"AuthError",message:"Unauthorized."}},"json"),e.end()}async call(e,t,i){if(!e.node.config.devMode&&!t.options.auth){if(this.user){if(255<t.options.user.username.length)return this.fail(i),{interrupt:!0,result:null};const e=Buffer.from(t.options.user.username,"ascii"),r=n.hash256(e);if(!a(r,this.user))return this.fail(i),{interrupt:!0,result:null}}if(!t.options.user||!t.options.user.password||255<t.options.user.password.length)return this.fail(i),{interrupt:!0,result:null};const e=Buffer.from(t.options.user.password,"ascii"),r=n.hash256(e);if(!a(r,this.pass))return this.fail(i),{interrupt:!0,result:null};t.options.auth=!0}return{interrupt:!1}}}},function(e,t,i){const r=i(2),s=i(77),n=i(78).errors,a=i(80),o=i(121),{getBlockOverview:c,getBlockByHash:h,formatTimestamp:u}=i(626);async function l(e,t){if(e.valid(),!(e=await this.chain.tip))throw new s(n.MISC_ERROR,"Block not found");if(e=await h(this.node,e.hash,t))return e.chain="VNS",e.network="main"===this.node.network.type?"mainnet":"testnet",e}e.exports=[{name:"blocks",method:"get",path:"/public/block",callback:async function(e,t){var i,r=this,s=(e=e.valid()).str("blockDate"),n=e.str("startTimestamp",""),a=(e=e.uint("limit",10),u(new Date));if(s){if(!/\d{4}-\d{2}-\d{2}/.test(s))throw new Error("Please use yyyy-mm-dd format");i=s===a}else s=a,i=!0;a=Math.round(new Date(s).getTime()/1e3),n=parseInt(n)||a+86400;var o=u(new Date(1e3*(a-86400))),c=n?u(new Date(1e3*n)):null,l=(e=parseInt(e||200),!1),p=n;try{var d,f=await r.chain.db.getTimestampHashes(n,a);let u=[];for(d of f)u.push(d.hash);u.reverse(),u.length>e&&(l=!0,u=u.slice(0,e));var m,g={blocks:[],length:u.length,pagination:{next:c,prev:o,currentTs:n-1,current:s,isToday:i,more:l,moreTs:l?p:void 0}};for(m of u){var y=await h(r,m,t);y.chain="VNS",y.network="main"===r.node.network.type?"mainnet":"testnet",g.blocks.push(y)}return g.blocks.sort((e,t)=>t.height-e.height),g.blocks}catch(e){throw e}}},{name:"block-tip",method:"get",path:"/public/block/tip",callback:l},{name:"blocks",method:"get",path:"/public/blocks",callback:async function(e,t){var i,r=(e=e.valid()).str("blockDate"),s=e.str("startTimestamp",""),n=(e=e.uint("limit",10),u(new Date));if(r){if(!/\d{4}-\d{2}-\d{2}/.test(r))throw new Error("Please use yyyy-mm-dd format");i=r===n}else r=n,i=!0;n=Math.round(new Date(r).getTime()/1e3),s=parseInt(s)||n+86400;var a=u(new Date(1e3*(n-86400))),o=s?u(new Date(1e3*s)):null,c=(e=parseInt(e||200),!1),l=s;try{var p,d=await this.chain.db.getTimestampHashes(s,n);let u=[];for(p of d)u.push(p.hash);u.reverse(),u.length>e&&(c=!0,u=u.slice(0,e));var f,m={blocks:[],length:u.length,pagination:{next:o,prev:a,currentTs:s-1,current:r,isToday:i,more:c,moreTs:c?l:void 0}};for(f of u){var g=await h(this,f,t);m.blocks.push(g)}return m.blocks.sort((e,t)=>t.height-e.height),m}catch(e){throw e}}},{name:"block-index",method:"get",path:"/public/block-index/:height",callback:async function(e,t){var i=this;if(-1===(e=(e=e.valid()).uint("height")))throw new s(n.TYPE_ERROR,"Invalid block height.");if(!(e=await i.chain.getEntry(e)))throw new s(n.MISC_ERROR,"Block not found");if(i=await h(i.node,e.hash,t))return i}},{name:"block-tip",method:"get",path:"/public/block-tip",callback:l},{name:"block",method:"get",path:"/public/block/:blockHash",callback:async function(e,t){if(e=(e=e.valid()).str("blockHash"),e=await h(this.node,e,t))return e.chain="VNS",e.network="main"===this.node.network.type?"mainnet":"testnet",e}},{name:"getBlock",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new a([t])).str(0),h(e,t)}},{name:"rawblock",method:"get",path:"/public/rawblock/:param",callback:async function(e,t){var i=this;let a=(e=e.valid()).str("param");if(a=r.checkNum(a)?parseInt(a):r.revHex(a),e=await i.chain.getBlock(a))return e.toRaw().toString("hex");if(i.chain.options.spv)throw new s(n.MISC_ERROR,"Block not available (spv mode)");if(i.chain.options.prune)throw new s(n.MISC_ERROR,"Block not available (pruned data)");throw new s(n.DATABASE_ERROR,"Can't read block from disk")}},{name:"getRawBlock",method:"jsonp",path:"/",callback:async function(e,t){let i=(t=new a([t])).str(0);return r.checkNum(i)&&(i=parseInt(i)),(t=await e.chain.getBlock(i))?t.toRaw().toString("hex"):null}},{name:"isSynced",method:"jsonp",path:"/",callback:async function(e,t){return e.chain.synced}},{name:"getBlockOverview",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new a([t])).str(0),c(e,t)}},{name:"getInfo",method:"jsonp",path:"/",callback:async function(e,t){var i=await e.rpc.execute({corba:!0,method:"miner.difficulty"});return{blocks:e.chain.height,connections:e.pool.peers.size(),timeoffset:0,proxy:"",testnet:"main"!==e.network.type,errors:"",network:e.network.type,relayFee:0,version:"bitcore-1.1.2",protocolversion:700001,difficulty:i}}},{name:"getBestHeight",method:"jsonp",path:"/",callback:async function(e,t){return e.chain.height}},{name:"getBlockHeader",method:"jsonp",path:"/",callback:async function(e,t){var i=(t=new a([t])).hash(0);t=t.bool(1,!0);if(!i)throw new s(n.MISC_ERROR,"Invalid block hash.");if(!(i=await e.chain.getEntry(i)))throw new s(n.MISC_ERROR,"Block not found");if(!t)return i.toRaw().toString("hex",0,80);t=await e.chain.getMedianTime(i);var c=await e.chain.getNextHash(i.hash);return{hash:i.rhash(),confirmations:e.chain.height-i.height+1,height:i.height,version:i.version,versionHex:r.hex32(i.version),merkleroot:r.revHex(i.merkleRoot),time:i.time,mediantime:t,bits:i.bits,difficulty:o.bits2Diff(i.bits),chainwork:i.chainwork.toString("hex",64),previousblockhash:i.prevBlock!==encoding.NULL_HASH?r.revHex(i.prevBlock):null,nextblockhash:c?r.revHex(c):null}}}]},function(e){e.exports=JSON.parse('[{"poolName":"50BTC","url":"https://50btc.com/","searchStrings":["50BTC.com","50btc.com"]},{"poolName":"175btc","url":"http://www.175btc.com/","searchStrings":["Mined By 175btc.com"]},{"poolName":"ASICminer","url":"https://bitcointalk.org/index.php?topic=99497.0","searchStrings":["Mined By ASICMiner"]},{"poolName":"AntMiner","url":"https://bitmaintech.com/","searchStrings":["AntPool"]},{"poolName":"agentD","url":"http://","searchStrings":["agentD"]},{"poolName":"Bitfury","url":"http://bitfury.org/","searchStrings":["2av0id51pct"]},{"poolName":"BitMinter","url":"https://bitminter.com/","searchStrings":["BitMinter"]},{"poolName":"Bitparking","url":"http://bitparking.com/","searchStrings":["bitparking"]},{"poolName":"BTC Guild","url":"https://www.btcguild.com/","searchStrings":["Mined by BTC Guild","BTC Guild"]},{"poolName":"bcpool.io","url":"https://bcpool.io/","searchStrings":["bcpool"]},{"poolName":"Discus Fish","url":"http://f2pool.com/","searchStrings":["七彩神仙鱼","Made in China","Mined by user"]},{"poolName":"Discus Fish Solo","url":"http://f2pool.com/","searchStrings":["For Pierce and Paul"]},{"poolName":"Cointerra","url":"http://cointerra.com/","searchStrings":["cointerra"]},{"poolName":"Eligius","url":"http://eligius.st/","searchStrings":["Eligius"]},{"poolName":"EclipseMC","url":"https://eclipsemc.com/","searchStrings":["Josh Zerlan was here!","EclipseMC","Aluminum Falcon"]},{"poolName":"GIVE-ME-COINS","url":"https://give-me-coins.com/","searchStrings":["Mined at GIVE-ME-COINS.com"]},{"poolName":"ghash.io","url":"https://ghash.io/","searchStrings":["ghash.io","GHash.IO"]},{"poolName":"HHTT","url":"http://hhtt.1209k.com/","searchStrings":["HHTT"]},{"poolName":"KNCminer","url":"https://www.kncminer.com/","searchStrings":["KnCMiner"]},{"poolName":"Megabigpower","url":"http://megabigpower.com/","searchStrings":["megabigpower.com"]},{"poolName":"MultiCoin","url":"https://multicoin.co/","searchStrings":["MultiCoin.co"]},{"poolName":"Mt Red","url":"https://mtred.com/","searchStrings":["/mtred/"]},{"poolName":"MaxBTC","url":"https://www.maxbtc.com","searchStrings":["MaxBTC"]},{"poolName":"NMCbit","url":"http://nmcbit.com/","searchStrings":["nmcbit.com"]},{"poolName":"ozcoin","url":"https://ozco.in/","searchStrings":["ozco.in","ozcoin"]},{"poolName":"Polmine.pl","url":"https://polmine.pl","searchStrings":["by polmine.pl"]},{"poolName":"simplecoin","url":"http://simplecoin.us/","searchStrings":["simplecoin.us ftw"]},{"poolName":"SlushPool","url":"https://slushpool.com/","searchStrings":["/slush/"]},{"poolName":"TripleMining","url":"https://www.triplemining.com/","searchStrings":["Triplemining.com"]},{"poolName":"wizkid057","url":"http://wizkid057.com/btc","searchStrings":["wizkid057"]},{"poolName":"Yourbtc.net","url":"http://yourbtc.net/","searchStrings":["yourbtc.net"]},{"poolName":"BTCChina Pool","url":"https://pool.btcchina.com/","searchStrings":["BTCChina Pool","btcchina.com"]},{"poolName":"BTCC Pool","url":"https://pool.btcc.com/","searchStrings":["/BTCC/"]}]')},function(e,t,i){const{utxo:r,_setOutputResults:s,_setInputResults:n,transformTransaction:a,getDetailFromMeta:o,translateOutputAddress:c}=i(626),h=i(33),u=i(80),l=i(2);async function p(e,t){var i=(t=new u([t])).array(0,[]),r=t.obj(1,{}),s=(r.from=r.from||0,r.to=r.to||4294967295,[]);t=await e.getMetaByAddress(i);let n=0;for(const i of t){if(n<r.from);else{if(n>=r.to)break;var a=await o(e,i);s.push(a)}n++}return{totalCount:t.length,items:s}}async function d(e,t){let i=(e=e.valid()).str("addr");i=i||e.str("addrs");var r=(e=await this.node.getCoinsByAddress(i.split(","))).reduce((e,t)=>e+t.value,0);return{confirmed:r-(e=e.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0)),unconfirmed:e,balance:r}}async function f(e,t){let i=(e=e.valid()).str("addr");var r,s=[];for(r of(i=i||e.str("addrs")).split(",")){var n=(a=await this.node.getCoinsByAddress(r)).reduce((e,t)=>e+t.value,0),a=a.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0);s.push({param:r,result:{confirmed:n-a,unconfirmed:a,balance:n}})}return s}async function m(e,t){let i=(r=e.valid()).str("addr");i=i||r.str("addrs");var r,s=((r={from:parseInt(e.query.from)||parseInt(e.body.from)||0}).to=parseInt(e.query.to)||parseInt(e.body.to)||parseInt(r.from)+10,y(e));try{var n,c=await this.node.getMetaByAddress(i.split(",")),h=[];for(n of c){var u=await o(this.node,n);h.push(await a(this.node,u,s))}return{totalItems:c.length,from:r.from,to:Math.min(r.to,c.length),items:h}}catch(e){throw e}}async function g(e,t){var i=e.valid();let r=i.str("addr");r=r||i.str("addrs");var s=y(e),n=[];try{for(var c of r.split(",")){var h,u=await this.node.getMetaByAddress(c),l=[];for(h of u){var p=await o(this.node,h);l.push(await a(this.node,p,s))}n.push({param:c,result:l})}return n}catch(e){throw e}}function y(e){return{noAsm:!!parseInt(e.query.noAsm),noScriptSig:!!parseInt(e.query.noScriptSig),noSpent:!!parseInt(e.query.noSpent)}}async function v(e,t){let i=(e=e.valid()).str("addrs");i=i||e.str("addr","");try{var s,n=[];for(s of await r(this.node,i.split(",")))n.push(w(this,s));return n}catch(e){throw e}}async function b(e,t){let i=(e=e.valid()).str("addrs");i=i||e.str("addr","");try{var s,n=[];for(s of i.split(",")){var a,o=[];for(a of await r(this.node,s))o.push(w(this,a));n.push({param:s,result:o})}return n}catch(e){throw e}}function w(e,t){var i={address:c(t.address),txid:l.revHex(t.txid),vout:t.vout,scriptPubKey:t.scriptPubKey,amount:t.satoshis/1e8,satoshis:t.satoshis};return t.height&&0<t.height?(i.height=t.height,i.confirmations=e.chain.height-t.height+1):i.confirmations=0,t.timestamp&&(i.ts=t.timestamp),i.chain="VNS",i.network="main"===e.node.network.type?"mainnet":"testnet",i.coinbase=t.coinbase,i.mintTxid=i.txid,i.value=i.satoshis,i.mintIndex=i.vout,i.mintHeight=i.height,i.spentTxid="",i.spentHeight=-2,i.script=i.scriptPubKey,i}async function k(e,t){var i=(e=e.valid()).str("id"),r=(e=e.uint("index",1),this.node.require("walletdb"));if(r&&(r=await r.get("primary"),await r.ensureAccount({name:i,witness:!0}),r=await r.createReceive(i,e)))return r.toJSON().address}async function x(e,t,i){i=i||{};var r={totalCount:0,items:[]};let a=0;for(const s of await e.node.getMetaByAddress(t)){if(i.from&&a<i.from);else{if(i.to&&a>=i.to)break;var u=await o(e.node,s);r.items.push(u)}a++}r.totalCount=r.items.length;for(var p={addrStr:t,balance:0,balanceSat:0,totalReceived:0,totalReceivedSat:0,totalSent:0,totalSentSat:0,unconfirmedBalance:0,unconfirmedBalanceSat:0,unconfirmedTxApperances:0,txApperances:0},d=0;d<r.items.length;d++){var f=r.items[d];s(e,f,t,p),n(e,f,t,p),i.noTxList||(p.transactions||(p.transactions=[]),p.transactions.push(l.revHex(f.txid())))}return p.balance=h.fromSatoshis(p.balanceSat).toBTC(),p.totalReceived=h.fromSatoshis(p.totalReceivedSat).toBTC(),p.totalSent=h.fromSatoshis(p.totalSentSat).toBTC(),p.unconfirmedBalance=h.fromSatoshis(p.unconfirmedBalanceSat).toBTC(),p.addrStr&&(p.addrStr=c(p.addrStr)),p}e.exports=[{name:"address.reflect",method:"get",path:"/public/addr/reflect/:id",callback:k},{name:"address.reflect.index",method:"get",path:"/public/addr/reflect/:id/:index",callback:k},{name:"getInfo",method:"get",path:"/public/addr/:addr",callback:async function(e,t){var i=(i=e.valid()).str("addr"),r={noTxList:parseInt(e.query.noTxList)};e.query.from&&e.query.to?(r.from=parseInt(e.query.from),r.to=parseInt(e.query.to)):(r.from=0,r.to=10);try{return await x(this,i,r)}catch(e){throw e}}},{name:"getUTXOByAddress",method:"get",path:"/public/addr/:addr/utxo",callback:v},{name:"getTXSByAddress",method:"get",path:"/public/address/:addr/txs",callback:m},{name:"getUTXOByAddress",method:"get",path:"/public/address/:addr/utxo",callback:v},{name:"getUTXOByAddresses",method:"get",path:"/public/addrs/:addrs/utxo",callback:v},{name:"postUTXOByAddresses",method:"post",path:"/public/addrs/utxo",callback:v},{name:"getUTXOGroupAddresses",method:"get",path:"/public/addrs/:addrs/grouputxo",callback:b},{name:"postUTXOGroupAddresses",method:"post",path:"/public/addrs/grouputxo",callback:b},{name:"getTXSByAddresses",method:"get",path:"/public/addrs/:addrs/txs",callback:m},{name:"postTXSByAddresses",method:"post",path:"/public/addrs/txs",callback:m},{name:"getTXSGroupAddresses",method:"get",path:"/public/addrs/:addrs/grouptxs",callback:g},{name:"postTXSGroupAddresses",method:"post",path:"/public/addrs/grouptxs",callback:g},{name:"getBalanceByAddress",method:"get",path:"/public/addrs/:addrs/balance",callback:d},{name:"postBalanceByAddress",method:"post",path:"/public/addrs/balance",callback:d},{name:"getBalanceGroupAddress",method:"get",path:"/public/addrs/:addrs/groupbalance",callback:f},{name:"postBalanceGroupAddress",method:"post",path:"/public/addrs/groupbalance",callback:f},{name:"getBalanceByAddress",method:"get",path:"/public/addr/:addr/balance",callback:async function(e,t){var i=this;let r=(e=e.valid()).str("addr");r=r||e.str("addrs"),e=await i.node.getCoinsByAddress(r.split(","));var s=(i=e.reduce((e,t)=>e+t.value,0))-(e=e.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0));return{confirmed:h.fromSatoshis(s).toBTC(),unconfirmed:h.fromSatoshis(e).toBTC(),balance:h.fromSatoshis(i).toBTC()}}},{name:"getBalanceByAddress",method:"get",path:"/public/address/:addr/balance",callback:d},{name:"getUnconfirmedBalance",method:"get",path:"/public/addr/:addr/unconfirmedBalance",callback:async function(e,t){var i=this;let r=(e=e.valid()).str("addr");return r=r||e.str("addrs"),e=await i.node.getCoinsByAddress(r.split(",")),i=e.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0),h.fromSatoshis(i).toBTC()}},{name:"getTotalReceived",method:"get",path:"/public/addr/:addr/totalReceived",callback:async function(e,t){let i=(e=e.valid()).str("addr");i=i||e.str("addrs");try{return(await x(this,i)).totalReceivedSat}catch(e){throw e}}},{name:"getTotalSent",method:"get",path:"/public/addr/:addr/totalSent",callback:async function(e,t){let i=(e=e.valid()).str("addr");i=i||e.str("addrs");try{return(await x(this,i)).totalSent}catch(e){throw e}}},{name:"getAddressHistory",method:"jsonp",path:"/",callback:p},{name:"getAddressSummary",method:"jsonp",path:"/",callback:async function(e,t){var i=new u([t]),r=i.array(0,[]),a=i.obj(1,{});a.from=a.from||0,a.to=a.to||4294967295;for(var o={addrStr:r,balance:0,balanceSat:0,totalReceived:0,totalReceivedSat:0,totalSent:0,totalSentSat:0,unconfirmedBalance:0,unconfirmedBalanceSat:0,unconfirmedTxApperances:0,txApperances:0},c=(i=await p(e,t)).items,l=0;l<c.length;l++){var d=c[l];s(e,d,r,o),n(e,d,r,o),a.noTxList||(o.transactions||(o.transactions=[]),o.transactions.push(d.txid()))}return o.balance=h.fromSatoshis(o.balanceSat).toBTC(),o.totalReceived=h.fromSatoshis(o.totalReceivedSat).toBTC(),o.totalSent=h.fromSatoshis(o.totalSentSat).toBTC(),o.unconfirmedBalance=h.fromSatoshis(o.unconfirmedBalanceSat).toBTC(),o}},{name:"getAddressUnspentOutputs",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new u([t])).array(0,[]),e=await r(e,t)}},{name:"getTxidsByAddress",method:"jsonp",path:"/",callback:async function(e,t){var i=(t=new u([t])).array(0);t=t.str(1,"both");return e.chain.getHashesByAddress(i,t)}}]},function(e,t,i){var r=i(83);const s=i(33),n=i(80);var a=i(331),o=0,c=Date.now();async function h(e){var t=await e.rpc.execute({corba:!0,method:"miner.difficulty"});return{blocks:e.chain.height,connections:e.node.pool.peers.size,timeoffset:0,proxy:"",testnet:"main"!==e.node.network.type,errors:"",network:e.node.network.type,relayFee:0,version:"gamegold-"+r.version,protocolversion:700001,difficulty:t}}e.exports=[{name:"getStatus",method:"get",path:"/public/status",callback:async function(e,t){switch(e.query.q){case"getDifficulty":try{return{difficulty:(await h(this)).difficulty}}catch(e){throw e}break;case"getLastBlockHash":var i=await this.chain.db.getTip();return{syncTipHash:i.hash,lastblockhash:i.hash};case"getBestBlockHash":try{return{bestblockhash:await this.rpc.execute({corba:!0,method:"block.best"})}}catch(e){throw e}break;default:try{return{info:await h(this)}}catch(e){throw e}}}},{name:"getSync",method:"get",path:"/public/sync",callback:async function(e,t){var i="syncing";try{this.chain.synced&&(i="finished");var r=(100*this.chain.getProgress()).toFixed(2);return{status:i,blockChainHeight:this.chain.height,syncPercentage:Math.round(r),height:this.chain.height,error:null,type:"gamegold node"}}catch(e){throw e}}},{name:"getVersion",method:"get",path:"/public/version",callback:async function(e,t){return{version:r.version}}},{name:"getPeer",method:"get",path:"/public/peer",callback:function(e,t){var i=this.pool.getLoader()||{connected:!1,address:{host:null,port:null}};return{connected:i.connected,host:i.address.host,port:i.address.port}}},{name:"getPeers",method:"get",path:"/public/peers",callback:async function(e,t){return this.rpc.execute({corba:!0,method:"sys.peerinfo"})}},{name:"getEstimateFee",method:"get",path:"/public/utils/estimatefee",callback:function(e,t){e=(e.query.nbBlocks||"2").split(",");try{var i,r={};for(i of e){var n=parseInt(i);let e=this.fees.estimateFee(n,!1);0===e&&(e=-1),e=s.btc(e,!0),r[n]=e}return r}catch(e){throw e}}},{name:"estimateFee",method:"jsonp",path:"/",callback:function(e,t){t=(t=new n([t])).array(0,["2"]);try{var i,r={};for(i of t){var a=parseInt(i);let t=e.fees.estimateFee(a,!1);0===t&&(t=-1),t=s.btc(t,!0),r[a]=t}return r}catch(t){throw t}}},{name:"currency",method:"get",path:"/public/currency",callback:async function(e,t){var i=Date.now();if(!(0===o||c+6e5<=i))return{status:200,data:{bitstamp:o}};c=i;try{var r=await new Promise((e,t)=>{a("https://www.bitstamp.net/api/ticker/",(function(i,r,s){i&&t(i),i||200!==r.statusCode||e(s)}))});return{status:200,data:{bitstamp:o=parseFloat(JSON.parse(r).last)}}}catch(e){throw e}}},{name:"explorers",method:"get",path:"/public/explorers",callback:async function(e,t){return[{name:"gamegold",ticker:"GG",url:"https://insight.gamegold.xin"}]}},{name:"syncPercentage",method:"jsonp",path:"/",callback:async function(e,t){return Math.round((100*e.chain.getProgress()).toFixed(2))}},{name:"sysEcho",method:"jsonp",path:"/",callback:function(e,t){return 0}},{name:"getBestBlockHash",method:"jsonp",path:"/",callback:async function(e,t){return{bestblockhash:e=await e.rpc.execute({corba:!0,method:"block.best"})}}}]},function(e,t,i){const r=i(682),s=i(0),n=i(2),{handleErrors:a,getDetailedTransaction:o,transformTransaction:c,getDetailFromMeta:h,getBlockOverview:u,translateInputAddresses:l}=i(626),p=i(80),d=i(19).opcodes,f=i(6);async function m(e,t){var i,r=[];for(i of e.valid().str("txids").split(","))try{i=n.revHex(i);var s=await this.rpc.execute({method:"tx.raw.get",params:[i,!0]});s&&r.push({param:i,result:s})}catch(e){}return r}async function g(e,t){var i,r=[];for(i of e.valid().str("txids").split(",")){var s,n=await o(this.node,i);n&&((s=await c(this.node,n,{})).chain="VNS",s.coinbase=n.isCoinbase(),s.network="main"===this.node.network.type?"mainnet":"testnet",s.blockTime=s.blocktime,s.blockTimeNormalized=s.blockTime,s.fee=s.fees*Math.pow(10,8),s.blockHash=s.blockhash,s.blockHeight=s.blockheight,s.coinbase=!1,s.inputCount=s.vin.length,s.outputCount=s.vout.length,s.value=s.valueIn*Math.pow(10,8),r.push({parama:i,result:s}))}return r}e.exports=[{name:"getTx",method:"get",path:"/public/tx/:txid",callback:async function(e,t){var i,r=this;return e=(e=e.valid()).hash("txid"),(e=await o(r.node,e))?((i=await c(r.node,e,{})).chain="VNS",i.coinbase=e.isCoinbase(),i.network="main"===r.node.network.type?"mainnet":"testnet",i.blockTime=i.blocktime,i.blockTimeNormalized=i.blockTime,i.fee=i.fees*Math.pow(10,8),i.blockHash=i.blockhash,i.blockHeight=i.blockheight,i.coinbase=!1,i.inputCount=i.vin.length,i.outputCount=i.vout.length,i.value=i.valueIn*Math.pow(10,8),i):null}},{name:"getTxs",method:"get",path:"/public/txids/:txids",callback:g},{name:"getTxs",method:"post",path:"/public/txids",callback:g},{name:"getRawTxs",method:"get",path:"/public/rawtxids/:txids",callback:m},{name:"getRawTxs",method:"post",path:"/public/rawtxids",callback:m},{name:"getSpender",method:"get",path:"/public/tx/:txid/spender/:index",callback:async function(e,t){var i=this,r=(e=e.valid()).hash("txid");e=e.u32("index",0);return s(r,"Hash is required."),s(null!=e,"Index is required."),(i=await i.node.chain.db.getSpender(r,e))&&(i.txid=n.revHex(i.txid)),i}},{name:"getTx",method:"get",path:"/public/tx/:txid/coins",callback:async function(e,t){let i=this;const r=e.valid().hash("txid");let s=await o(i.node,r),a=null;if(s){a=await c(i.node,s,{});let e={inputs:[],outputs:[]},t=0;return s.inputs.map(o=>{var c=a.vin[t];c.coinbase=o.isCoinbase(),c.chain="VNS",c.network="main"===i.node.network.type?"mainnet":"testnet",c.sequenceNumber=o.sequence,c.address=a.vin[t].address||"",c.value=a.vin[t].valueSat||0,c.mintHeight=a.vin[t].mintHeight||0,c.mintTxid=n.revHex(o.prevout.hash),c.mintIndex=o.prevout.index,c.spentTxid=r,c.spentHeight=s.height,c.confirmations=s.confirmations,c.script=o.script.raw.toString("hex"),e.inputs.push(c),t++}),t=0,s.outputs.map(n=>{var o=a.vout[t];o.chain="VNS",o.network="main"===i.node.network.type?"mainnet":"testnet",o.coinbase=s.isCoinbase(),o.mintTxid=r,o.address=a.vout[t].scriptPubKey.addresses?a.vout[t].scriptPubKey.addresses[0]:"",o.spentTxid=a.vout[t].spentTxid||"",o.spentHeight=a.vout[t].spentHeight||0,o.mintIndex=t,o.mintHeight=s.height,o.value=n.value,o.confirmations=s.confirmations,o.script=n.script.raw.toString("hex"),e.outputs.push(o),t++}),e}return null}},{name:"getRawTx",method:"get",path:"/public/rawtx/:txid",callback:async function(e,t){return e=(e=e.valid()).str("txid"),{rawtx:e=await this.rpc.execute({method:"tx.raw.get",params:[e]})}}},{name:"getBlob",method:"get",path:"/public/blob/:txid/:index",callback:async function(e,t){var i=(e=e.valid()).hash("txid");e=e.uint("index");if(!(i=await this.node.getMeta(i))||!i.tx)return null;if(!(i=i.tx.outputs[e]))return null;if(!(e=i.getReturnData([d.OP_PROPEXCHANGE,d.OP_PROPCREATE]))||!e.oid)return null;if(!(i=await this.node.chain.db.erList.query([["erid",e.oid]]))||!i.list||!i.list[0].erid)return null;let r=i.list[0].source.blob;return"string"==typeof r&&(r=JSON.parse(r)),t.setHeader("content-type",r.type),{data:r}}},{name:"notify",method:"post",path:"/public/notify",callback:async function(e,t){return e.body.sign==(delete e.body.sign,e.body.secret=this.node.config.remotesecret,f.hash256(Buffer.from(JSON.stringify(e.body))).toString("hex"))?(delete e.body.secret,console.log("remote notify:",JSON.stringify(e.body)),{code:0}):{code:-1}}},{name:"getList",method:"get",path:"/public/txs",callback:async function(e,t){s(!this.chain.options.spv,"Cannot get TX in SPV mode.");var i,p=e.query.blockHash,d=l(e.query.address),f=(e=parseInt(e.query.pageNum)||0,1);if(p){if(!(p=await u(this.node,p,t)))return a(null,t);t=p.txids.length;var m,g,y=(r.isUndefined(e)?i=p.txids:(m=10*e,i=p.txids.slice(m,10+m),f=Math.ceil(t/10)),[]);for(g of i){var v=await o(this.node,n.revHex(g));v&&y.push(await c(this.node,v,{}))}return{pagesTotal:f,txs:y}}if(d){var b=10*e,w=10*(e+1),k=[];p=await this.node.getMetaByAddress(d);let t=0;for(const e of p){if(t<b);else{if(t>=w)break;var x=await h(this.node,e);k.push(await c(this.node,x,{}))}t++}return{pagesTotal:Math.ceil(p.length/10),txs:k}}throw new Error("Block hash or address expected")}},{name:"block",method:"get",path:"/public/block/:blockHash/coins/:pageSize/:pageNum",callback:async function(e,t){var i=this,p=(s(!i.chain.options.spv,"Cannot get TX in SPV mode."),e.query.blockHash),d=e.params.pageSize?parseInt(e.params.pageSize):100,f=l(e.query.address),m=parseInt(e.params.pageNum)-1||0,g=1;if(p=p||e.params.blockHash){if(!(e=await u(i.node,p,t)))return a(null,t);t=e.txids.length;var y,v=[],b=[],w=(r.isUndefined(m)?y=e.txids:(E=m*d,y=e.txids.slice(E,E+d),g=Math.ceil(t/d)),[]);for(let e of y){let t=await o(i.node,n.revHex(e),!0),r=null;if(t){r=await c(i.node,t,{}),w.push(r);let s=0;t.inputs.map(a=>{a.isCoinbase()||v.push({coinbase:!1,chain:"VNS",network:"main"===i.node.network.type?"mainnet":"testnet",mintTxid:n.revHex(a.prevout.hash),mintIndex:a.prevout.index,spentTxid:e,spentHeight:t.height,confirmations:t.confirmations,sequenceNumber:a.sequence,script:a.script.raw.toString("hex"),address:r.vin[s].addr||"",mintHeight:r.vin[s].mintHeight||0,value:r.vin[s].valueSat||0}),s++}),s=0,t.outputs.map(n=>{b.push({coinbase:t.isCoinbase(),chain:"VNS",network:"main"===i.node.network.type?"mainnet":"testnet",mintTxid:e,address:r.vout[s].scriptPubKey.addresses?r.vout[s].scriptPubKey.addresses[0]:"",spentTxid:r.vout[s].spentTxid||"",spentHeight:r.vout[s].spentHeight||0,mintIndex:s,mintHeight:t.height,value:n.value,confirmations:t.confirmations,script:n.script.raw.toString("hex")}),s++})}}return{txids:y,previous:"",next:m+1<g?`/block/${p}/coins/${d}/`+(m+2):"",inputs:v,outputs:b}}if(f){var k=m*d,x=(m+1)*d,S=[];e=await i.node.getMetaByAddress(f);let t=0;for(const r of e){if(t<k);else{if(t>=x)break;var _=await h(i.node,r);S.push(await c(i.node,_,{}))}t++}var E=Math.ceil(e.length/d);return{txids:y,previous:"",next:`/block/${p}/coins/${d}/`+((m+1)%E+1),pagesTotal:E,inputs:[],outputs:[],txs:S}}throw new Error("Block hash or address expected")}},{name:"getTxSend",method:"get",path:"/public/rawsend/:tx",callback:async function(e,t){return e=(e=e.valid()).str("tx"),e=await this.rpc.execute({method:"tx.raw.send",params:[e]})}},{name:"getDetailedTransaction",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new p([t])).hash(0),o(e,t,!0)}},{name:"getTransaction",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new p([t])).hash(0),e=await o(e,t,!1)}},{name:"getRawTransaction",method:"jsonp",path:"/",callback:async function(e,t){var i=(t=new p([t])).str(0);t=t.bool(1,!1);return e.rpc.execute({method:"tx.raw.get",params:[i,t]})}},{name:"getMempoolTransaction",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new p([t])).hash(0),e.mempool.getTX(t)}}]},function(e,t,i){const r=i(19).opcodes,s=i(31),n=i(2).revHex,a=i(80);e.exports=[{name:"prop.byaddress",method:"get",path:"/public/props/address/:address",callback:async function(e,t){return e=e.valid().str("address"),this.node.chain.db.getVpByAddress(e)}},{name:"prop.bidlist",method:"jsonp",path:"/",callback:async function(e,t){e.bidList||(e.bidList=new s);t=new a([t]);var i=Math.max(0,t.uint(0));return 0==i?(t=t.str(1))?e.bidList.query([["pid",t],["size",e.bidList.getSize()],["page",1]]):e.bidList.query([["size",e.bidList.getSize()],["page",1]]):e.bidList.query([["size",10],["page",i]])}},{name:"propBidlist",method:"get",path:"/public/prop/bidlist/:page",callback:async function(e,t){return this.node.bidList||(this.node.bidList=new s),e=e.valid(),(e=Math.max(0,e.uint("page",0)))?this.node.bidList.query([["size",10],["page",e]]):this.node.bidList.query([["size",this.node.bidList.getSize()],["page",1]])}},{name:"propBidOne",method:"get",path:"/public/prop/bidone/:pid",callback:async function(e,t){return this.node.bidList||(this.node.bidList=new s),(e=e.valid().str("pid"))?this.node.bidList.query([["pid",e],["page",1]]):[]}},{name:"getPropById",method:"jsonp",path:"/",callback:async function(e,t){var i=[],s=(t=new a([t]).str(0),await e.chain.db.propList.getVp(t));if(s){let t=[s.current.hash,s.current.index];for(;;){var o=await e.getMeta(t[0]),c=o.tx;if(!c)break;if(!(c=c.outputs[t[1]]))break;var h=c.getReturnData([r.OP_PROPCREATE,r.OP_PROPEXCHANGE]);if(!h)break;if(h.current={hash:n(t[0]),index:t[1],address:c.getAddress().toString()},h.height=o.height,h.status=s.pst,h.pst=s.pst,h.gold=s.gold,0==i.length&&s.bid&&(h.bid=s.bid),i.push(h),!h.prev)break;t=[h.prev.hash,h.prev.index]}}return i}},{name:"prop.get",method:"get",path:"/public/prop/:pid",callback:async function(e,t){var i=[],s=(e=e.valid().str("pid"),await this.node.chain.db.propList.getVp(e));if(s){let e=[s.current.hash,s.current.index];for(;;){var a=await this.node.getMeta(e[0]);if(!a||!a.tx)break;var o=a.tx.outputs[e[1]];if(!o)break;var c=o.getReturnData([r.OP_PROPCREATE,r.OP_PROPEXCHANGE]);if(!c)break;if(c.current={hash:n(e[0]),index:e[1],address:o.getAddress().toString()},c.height=a.height,c.status=s.pst,c.pst=s.pst,c.gold=s.gold,0==i.length&&s.bid&&(c.bid=s.bid),i.push(c),!c.prev)break;e=[c.prev.hash,c.prev.index]}}return i}}]},function(e,t,i){const r=i(80);e.exports=[{name:"cp.remoteQuery",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).array(0,[]),e.chain.db.cpList.query(t)},remoteCb:async function(e){if(e&&Array.isArray(e.list))for(var t of e.list)this.wdb.cpList.getItem(t.cid)||await this.wdb.cpList.addItem(t);return e}},{name:"cps",method:"get",path:"/public/cps",callback:async function(e,t){return e={page:e.valid().u32("page",1),pageCount:0},{list:this.chain.db.cpList.getCPList([],e),cur:e.page,page:e.pageCount}}},{name:"cpById",method:"get",path:"/public/cp/:id",callback:async function(e,t){var i=(e=e.valid()).u32("page",1);e=e.str("id");return(e=this.chain.db.cpList.getCPList(e?[e]:[],{page:i}))&&0<e.length?e[0]:null}},{name:"cpByName",method:"get",path:"/public/cp/name/:name",callback:async function(e,t){var i=(e=e.valid()).u32("page",1);e=decodeURIComponent(e.str("name"));return(e=this.chain.db.cpList.getCPListByName(e?[e]:[],{page:i}))&&0<e.length?e[0]:null}}]},function(e,t,i){const r=i(80),s=i(100),n=i(77),a=i(78).errors,o=i(67),c=i(5).ContractStatus,h=i(20),u=i(33);e.exports=[{name:"token.random",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(1!==t.length)throw new n(a.MISC_ERROR,"token.random clientNo: 生成令牌随机量 终端编码");return t=new r([t]).str(0),t=o.getHmac(t,e.keys.hmacSalt).random}},{name:"mempool.watch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.join("mempool")}},{name:"mempool.unwatch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.leave("mempool")}},{name:"chain.watch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.join("chain")}},{name:"chain.unwatch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.leave("chain")}},{name:"chain.rescan",method:"jsonp",path:"/",callback:async function(e,t,i){if(null==(t=new r([t]).numhash(0)))throw new Error("Invalid parameter.");return e.http.scan(i,t)}},{name:"subscribe",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i&&Array.isArray(t))for(var r of t)i.bus.subscribe(r);return!0}},{name:"unsubscribe",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i&&Array.isArray(t))for(var r of t)i.bus.unsubscribe(r);return!0}},{name:"filter.set",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i){if(t=new r([t]).buf(0))return i.filter=s.fromRaw(t),null;throw new Error("Invalid parameter.")}}},{name:"filter.reset",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){i&&(i.filter=null)}},{name:"filter.add",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i){var s=new r([t]).array(0);if(!s)throw new Error("Invalid parameter.");if(!i.filter)throw new Error("No filter set.");for(let t=0;t<s.length;t++){var n=s[t];if(!n)throw new Error("Bad data chunk.");i.filter.add(n),e.spv&&e.pool.watch(n)}}}},{name:"canExecute",method:"jsonp",path:"/",callback:async function(e,t){return(t=new r([t]).obj(0,{})).confirm||"cpChange"==t.oper?e.chain.db.cpList.canExecute(t):await e.mempool.cpMemList.canExecute(t)&&await e.chain.db.cpList.canExecute(t)}},{name:"contract.list",method:"jsonp",path:"/",callback:async function(e,t){var i,s,n,a;return 0==t.length?"contract.list type page ids size: 查询并返回交易对 交易类型 指定查询的ID数组 页码":(a=(t=new r([t])).uint(0,1),i=t.uint(1,1),s=t.array(2,[]),t=t.int(3,10),(n=[]).push(["transStatus",c.CreatedOnMem]),a&&n.push(["type",a]),0<s.length&&n.push(["id","include",s]),{pageNum:(a=e.chain.db.transactionList.where(n).paginate(t,i)).pageNum,pageCur:a.pageCur,list:a.records()})},remoteCb:async function(e){if(e&&Array.isArray(e.list))for(var t of e.list)this.wdb.transactionList.saveContract(t,!0);return e}},{name:"block.tip",method:"jsonp",path:"/",callback:async function(e,t){return e.chain.tip.toRaw()}},{name:"block.entry",method:"jsonp",path:"/",callback:async function(e,t){if(null==(t=new r([t]).numhash(0)))throw new Error("Invalid parameter.");return(t=await e.chain.getEntry(t))&&await e.chain.isMainChain(t)?t.toRaw():null}},{name:"$tx.broadcast",method:"jsonp",path:"/",callback:async function(e,t,i){t=new r([t]).buf(0),t=h.fromRaw(t),await e.sendTX(t)}},{name:"$estimate.fee",method:"jsonp",path:"/",callback:async function(e,t){if(t=new r([t]).u32(0,1),e.fees)return 0===(e=e.fees.estimateFee(t,!1))?-1:u.btc(e,!0);throw new n(a.MISC_ERROR,"Fee estimation not available.")}}]},function(e,t,i){const r=i(80),s=i(784);e.exports=[{name:"ca.get",method:"get",path:"/public/ca/:erid",callback:async function(e,t){return e=e.valid().str("erid"),(e=await this.node.chain.db.erList.query([["erid",e]])).height=this.node.chain.height,e}},{name:"ca.byId",method:"jsonp",path:"/",callback:async function(e,t){return t=new r([t]).str(0),e.chain.db.erList.getEr(t)}},{name:"ca.rank",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).str(0,""),(e=await(async e=>new Promise((t,i)=>{s(e,.85,1e-4,(function(e,r){e?i(e):t(r)}))}))(e.chain.db.enCpList.rank))[t]},remoteCb:async function(e){return e}},{name:"ca.list",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).array(0,[]),(t=await e.chain.db.erList.query(t)).height=e.chain.height,t}},{name:"ca.verify",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).str(0,""),(t=await e.chain.db.caVerify(t))&&(t.curHeight=e.chain.height),t},remoteCb:async function(e){return e}},{name:"ca.list.ab",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).array(0,[]),e.chain.db.erAbList.query(t)},remoteCb:async function(e){return e}}]},function(e,t,i){"use strict";class r{constructor(e,t,i,r,s){this.outgoingNodes=e,this.linkProb=t,this.tolerance=i,this.callback=r,this.pageCount=Object.keys(this.outgoingNodes).length,this.coeff=(1-t)/this.pageCount,this.probabilityNodes=e instanceof Array?[]:{},this.incomingNodes=e instanceof Array?[]:{},this.debug=s,this.startRanking()}startRanking(){var e,t,i,r=1/this.pageCount,s=this.outgoingNodes;for(e in s)for(t in this.probabilityNodes[e]=r,s[e])i=s[e][t],this.incomingNodes[i]||(this.incomingNodes[i]=[]),this.incomingNodes[i].push(e);this.debug&&this.reportDebug(1),this.iterate(1)}reportDebug(e){console.log("____ITERATION "+e+"____"),console.log("Pages: "+Object.keys(this.outgoingNodes).length),console.log("outgoing %j",this.outgoingNodes),console.log("incoming %j",this.incomingNodes),console.log("probability %j",this.probabilityNodes)}iterate(e){var t,i,r,s,n,a=[],o={};for(t in this.probabilityNodes){if(r=0,this.incomingNodes[t])for(i=0;i<this.incomingNodes[t].length;i++)r+=this.probabilityNodes[this.incomingNodes[t][i]]/this.outgoingNodes[this.incomingNodes[t][i]].length;s=this.coeff+this.linkProb*r,n=this.probabilityNodes[t]+this.tolerance,this.probabilityNodes[t]-this.tolerance<=s&&s<=n&&a.push(o[t]=s),this.probabilityNodes[t]=s}return a.length==this.pageCount?this.outgoingNodes instanceof Array?this.callback(null,a):this.callback(null,o):(this.debug&&this.reportDebug(e),this.iterate(++e))}}e.exports=function(e,t,i,s,n=!1){if(e&&t&&i&&s)return new r(e,t,i,s,n);throw new Error("Provide 4 arguments: nodeMatrix, link probability, tolerance, callback")}},function(e,t,i){"use strict";e.exports=class{constructor(e){this.config=e,this.hmacConnection=this.config.array("hmac-connection")||[],this.config.hmacConnection=this.hmacConnection}add(e){-1==this.hmacConnection.indexOf(e)&&this.hmacConnection.push(e),this.config.hmacConnection=this.hmacConnection}del(e){-1!=(e=this.hmacConnection.indexOf(e))&&(this.hmacConnection.splice(e,1),this.config.hmacConnection=this.hmacConnection)}clear(){this.hmacConnection=[],this.config.hmacConnection=this.hmacConnection}content(){return this.hmacConnection}has(e){return-1!=this.hmacConnection.indexOf(e)}}},function(e,t,i){"use strict";
|
|
1693
|
+
*/e.exports=function(e,t){if(!e||!e.getHeader||!e.setHeader)throw new TypeError("res argument is required");var i=e.getHeader("Vary")||"";(i=s(Array.isArray(i)?i.join(", "):String(i),t))&&e.setHeader("Vary",i)},e.exports.append=s;var r=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function s(e,t){if("string"!=typeof e)throw new TypeError("header argument is required");if(!t)throw new TypeError("field argument is required");for(var i=Array.isArray(t)?t:n(String(t)),s=0;s<i.length;s++)if(!r.test(i[s]))throw new TypeError("field argument contains an invalid header name");if("*"===e)return e;var a=e,o=n(e.toLowerCase());if(-1!==i.indexOf("*")||-1!==o.indexOf("*"))return"*";for(var c=0;c<i.length;c++){var h=i[c].toLowerCase();-1===o.indexOf(h)&&(o.push(h),a=a?a+", "+i[c]:i[c])}return a}function n(e){for(var t=0,i=[],r=0,s=0,n=e.length;s<n;s++)switch(e.charCodeAt(s)){case 32:r===t&&(r=t=s+1);break;case 44:i.push(e.substring(r,t)),r=t=s+1;break;default:t=s+1}return i.push(e.substring(r,t)),i}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uServer=void 0;var r=i(93);const s=i(664),n=i(762),a=(0,r.default)("engine:uws");class o extends s.BaseServer{init(){}cleanup(){}prepare(e,t){e.method=e.getMethod().toUpperCase();var i=new URLSearchParams(e.getQuery());e._query=Object.fromEntries(i.entries()),e.headers={},e.forEach((t,i)=>{e.headers[t]=i}),e.connection={remoteAddress:Buffer.from(t.getRemoteAddressAsText()).toString()},t.onAborted(()=>{a("response has been aborted")})}createTransport(e,t){return new n.default[e](t)}attach(e,t={}){var i=(t.path||"/engine.io").replace(/\/$/,"")+"/";e.any(i,this.handleRequest.bind(this)).ws(i,{compression:t.compression,idleTimeout:t.idleTimeout,maxBackpressure:t.maxBackpressure,maxPayloadLength:this.opts.maxHttpBufferSize,upgrade:this.handleUpgrade.bind(this),open:e=>{(e.transport.socket=e).transport.writable=!0,e.transport.emit("drain")},message:(e,t,i)=>{e.transport.onData(i?t:Buffer.from(t).toString())},close:(e,t,i)=>{e.transport.onClose(t,i)}})}handleRequest(e,t){a('handling "%s" http request "%s"',t.getMethod(),t.getUrl()),this.prepare(t,e),t.res=e;const i=(i,r)=>{void 0!==i?(this.emit("connection_error",{req:t,code:i,message:s.Server.errorMessages[i],context:r}),this.abortRequest(t.res,i,r)):t._query.sid?(a("setting new request for existing client"),this.clients[t._query.sid].transport.onRequest(t)):this.handshake(t._query.transport,t,(t,i)=>this.abortRequest(e,t,i))};this.corsMiddleware?(t.res=new c(e),this.corsMiddleware.call(null,t,t.res,()=>{this.verify(t,!1,i)})):this.verify(t,!1,i)}handleUpgrade(e,t,i){a("on upgrade"),this.prepare(t,e),t.res=e,this.verify(t,!0,async(r,n)=>{if(r)this.emit("connection_error",{req:t,code:r,message:s.Server.errorMessages[r],context:n}),this.abortRequest(e,r,n);else{let s;if(r=t._query.sid)(n=this.clients[r])?n.upgrading?(a("transport has already been trying to upgrade"),e.close()):n.upgraded?(a("transport had already been upgraded"),e.close()):(a("upgrading existing transport"),s=this.createTransport(t._query.transport,t),n.maybeUpgrade(s)):(a("upgrade attempt for closed client"),e.close());else if(!(s=await this.handshake(t._query.transport,t,(t,i)=>this.abortRequest(e,t,i))))return;e.upgrade({transport:s},t.getHeader("sec-websocket-key"),t.getHeader("sec-websocket-protocol"),t.getHeader("sec-websocket-extensions"),i)}})}abortRequest(e,t,i){var r=t===s.Server.errors.FORBIDDEN?"403 Forbidden":"400 Bad Request";i=i&&i.message?i.message:s.Server.errorMessages[t];e.writeStatus(r),e.writeHeader("Content-Type","application/json"),e.end(JSON.stringify({code:t,message:i}))}}t.uServer=o;class c{constructor(e){this.res=e,this.statusWritten=!1,this.headers=[]}set statusCode(e){this.writeStatus(200===e?"200 OK":"204 No Content")}setHeader(e,t){this.writeHeader(e,t)}getHeader(){}writeStatus(e){this.res.writeStatus(e),this.statusWritten=!0,this.writeBufferedHeaders()}writeHeader(e,t){"Content-Length"!==e&&(this.statusWritten?this.res.writeHeader(e,t):this.headers.push([e,t]))}writeBufferedHeaders(){this.headers.forEach(([e,t])=>{this.res.writeHeader(e,t)})}end(e){this.statusWritten||this.writeBufferedHeaders(),this.res.end(e)}onData(e){this.res.onData(e)}onAborted(e){this.res.onAborted(e)}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(763);i=i(764);t.default={polling:r.Polling,websocket:i.WebSocket}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Polling=void 0;var r=i(315),s=i(174);const n=i(623),a=(0,i(93).default)("engine:polling"),o={gzip:s.createGzip,deflate:s.createDeflate};class c extends r.Transport{constructor(e){super(e),this.closeTimeout=3e4}get name(){return"polling"}get supportsFraming(){return!1}onRequest(e){var t=e.res;"get"===e.getMethod()?this.onPollRequest(e,t):"post"===e.getMethod()?this.onDataRequest(e,t):(t.writeStatus("500 Internal Server Error"),t.end())}onPollRequest(e,t){this.req?(a("request overlap"),this.onError("overlap from client"),t.writeStatus("500 Internal Server Error"),t.end()):(a("setting request"),this.req=e,this.res=t,e.cleanup=()=>{this.req=this.res=null},t.onAborted(()=>{this.writable=!1,this.onError("poll connection closed prematurely")}),this.writable=!0,this.emit("drain"),this.writable&&this.shouldClose&&(a("triggering empty send to append close packet"),this.send([{type:"noop"}])))}onDataRequest(e,t){if(this.dataReq)this.onError("data request overlap from client"),t.writeStatus("500 Internal Server Error"),t.end();else{const s=Number(e.headers["content-length"]);if(s)if(s>this.maxHttpBufferSize)this.onError("payload too large"),t.writeStatus("413 Payload Too Large").end();else{if("application/octet-stream"===e.headers["content-type"]&&4===this.protocol)return this.onError("invalid content");this.dataReq=e,this.dataRes=t;let n,a=0;var i,r={"Content-Type":"text/html"};for(i in this.headers(e,r),r)t.writeHeader(i,String(r[i]));const o=e=>{this.onData(e.toString()),this.onDataRequestCleanup(),t.end("ok")};t.onAborted(()=>{this.onDataRequestCleanup(),this.onError("data request connection closed prematurely")}),t.onData((e,i)=>{var r=a+e.byteLength;if(r>s)this.onError("content-length mismatch"),t.close();else{if(!n){if(i)return void o(Buffer.from(e));n=Buffer.allocUnsafe(s)}if(Buffer.from(e).copy(n,a),i)return r!=s?(this.onError("content-length mismatch"),t.writeStatus("400 Content-Length Mismatch").end(),void this.onDataRequestCleanup()):void o(n);a=r}})}else this.onError("content-length header required"),t.writeStatus("411 Length Required").end()}}onDataRequestCleanup(){this.dataReq=this.dataRes=null}onData(e){a('received "%s"',e);var t=e=>{if("close"===e.type)return a("got xhr close packet"),this.onClose(),!1;this.onPacket(e)};3===this.protocol?this.parser.decodePayload(e,t):this.parser.decodePayload(e).forEach(t)}onClose(){this.writable&&this.send([{type:"noop"}]),super.onClose()}send(e){this.writable=!1,this.shouldClose&&(a("appending close packet to payload"),e.push({type:"close"}),this.shouldClose(),this.shouldClose=null);var t=t=>{var i=e.some(e=>e.options&&e.options.compress);this.write(t,{compress:i})};3===this.protocol?this.parser.encodePayload(e,this.supportsBinary,t):this.parser.encodePayload(e,t)}write(e,t){a('writing "%s"',e),this.doWrite(e,t,()=>{this.req.cleanup()})}doWrite(e,t,i){var r="string"==typeof e;const s={"Content-Type":r?"text/plain; charset=UTF-8":"application/octet-stream"},a=e=>{this.headers(this.req,s),Object.keys(s).forEach(e=>{this.res.writeHeader(e,String(s[e]))}),this.res.end(e),i()};if(this.httpCompression&&t.compress)if((r?Buffer.byteLength(e):e.length)<this.httpCompression.threshold)a(e);else{const t=n(this.req).encodings(["gzip","deflate"]);t?this.compress(e,t,(e,r)=>{e?(this.res.writeStatus("500 Internal Server Error"),this.res.end(),i(e)):(s["Content-Encoding"]=t,a(r))}):a(e)}else a(e)}compress(e,t,i){a("compressing");const r=[];let s=0;o[t](this.httpCompression).on("error",i).on("data",(function(e){r.push(e),s+=e.length})).on("end",(function(){i(null,Buffer.concat(r,s))})).end(e)}doClose(e){let t;a("closing");var i=()=>{clearTimeout(t),e(),this.onClose()};this.writable?(a("transport writable - closing right away"),this.send([{type:"close"}]),i()):this.discarded?(a("transport discarded - closing right away"),i()):(a("transport not writable - buffering orderly close"),this.shouldClose=i,t=setTimeout(i,this.closeTimeout))}headers(e,t){t=t||{};var i=e.headers["user-agent"];return i&&(~i.indexOf(";MSIE")||~i.indexOf("Trident/"))&&(t["X-XSS-Protection"]="0"),this.emit("headers",t,e),t}}t.Polling=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebSocket=void 0;var r=i(315);const s=(0,i(93).default)("engine:ws");class n extends r.Transport{constructor(e){super(e),this.writable=!1,this.perMessageDeflate=null}get name(){return"websocket"}get handlesUpgrades(){return!0}get supportsFraming(){return!0}send(e){var t,i=e.shift();void 0===i?(this.writable=!0,this.emit("drain")):(i.options&&i.options.compress,t=t=>{var i="string"!=typeof t,r=this.perMessageDeflate&&Buffer.byteLength(t)>this.perMessageDeflate.threshold;s('writing "%s"',t),this.writable=!1,this.socket.send(t,i,r),this.send(e)},i.options&&"string"==typeof i.options.wsPreEncoded?t(i.options.wsPreEncoded):this.parser.encodePacket(i,this.supportsBinary,t))}doClose(e){s("closing"),e&&e(),this.socket.close()}}t.WebSocket=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Client=void 0;const r=i(53);var s=i(93);const n=i(43),a=s("socket.io:client");t.Client=class{constructor(e,t){this.sockets=new Map,this.nsps=new Map,this.server=e,this.conn=t,this.encoder=e.encoder,this.decoder=new e._parser.Decoder,this.id=t.id,this.setup()}get request(){return this.conn.request}setup(){this.onclose=this.onclose.bind(this),this.ondata=this.ondata.bind(this),this.onerror=this.onerror.bind(this),this.ondecoded=this.ondecoded.bind(this),this.decoder.on("decoded",this.ondecoded),this.conn.on("data",this.ondata),this.conn.on("error",this.onerror),this.conn.on("close",this.onclose),this.connectTimeout=setTimeout(()=>{0===this.nsps.size?(a("no namespace joined yet, close the client"),this.close()):a("the client has already joined a namespace, nothing to do")},this.server._connectTimeout)}connect(e,t={}){if(this.server._nsps.has(e))return a("connecting to namespace %s",e),this.doConnect(e,t);this.server._checkNamespace(e,t,i=>{i?this.doConnect(e,t):(a("creation of namespace %s was denied",e),this._packet({type:r.PacketType.CONNECT_ERROR,nsp:e,data:{message:"Invalid namespace"}}))})}doConnect(e,t){const i=this.server.of(e),r=i._add(this,t,()=>{this.sockets.set(r.id,r),this.nsps.set(i.name,r),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)})}_disconnect(){for(const e of this.sockets.values())e.disconnect();this.sockets.clear(),this.close()}_remove(e){var t;this.sockets.has(e.id)?(t=this.sockets.get(e.id).nsp.name,this.sockets.delete(e.id),this.nsps.delete(t)):a("ignoring remove for %s",e.id)}close(){"open"===this.conn.readyState&&(a("forcing transport close"),this.conn.close(),this.onclose("forced server close"))}_packet(e,t={}){"open"!==this.conn.readyState?a("ignoring packet write %j",e):(e=t.preEncoded?e:this.encoder.encode(e),this.writeToEngine(e,t))}writeToEngine(e,t){if(t.volatile&&!this.conn.transport.writable)a("volatile packet is discarded since the transport is not currently writable");else for(const i of Array.isArray(e)?e:[e])this.conn.write(i,t)}ondata(e){try{this.decoder.add(e)}catch(e){a("invalid packet format"),this.onerror(e)}}ondecoded(e){let t,i;var s;i=3===this.conn.protocol?(t=(s=n.parse(e.nsp,!0)).pathname,s.query):(t=e.nsp,e.data);const o=this.nsps.get(t);o||e.type!==r.PacketType.CONNECT?o&&e.type!==r.PacketType.CONNECT&&e.type!==r.PacketType.CONNECT_ERROR?process.nextTick((function(){o._onpacket(e)})):(a("invalid state (packet type: %s)",e.type),this.close()):this.connect(t,i)}onerror(e){for(const t of this.sockets.values())t._onerror(e);this.conn.close()}onclose(e){a("client close with reason %s",e),this.destroy();for(const t of this.sockets.values())t._onclose(e);this.sockets.clear(),this.decoder.destroy()}destroy(){this.conn.removeListener("data",this.ondata),this.conn.removeListener("error",this.onerror),this.conn.removeListener("close",this.onclose),this.decoder.removeListener("decoded",this.ondecoded),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParentNamespace=void 0;const r=i(674);class s extends r.Namespace{constructor(e){super(e,"/_"+s.count++),this.children=new Set}_initAdapter(){this.adapter={broadcast:(e,t)=>{this.children.forEach(i=>{i.adapter.broadcast(e,t)})}}}emit(e,...t){return this.children.forEach(i=>{i.emit(e,...t)}),!0}createChild(e){const t=new r.Namespace(this.server,e);return t._fns=this._fns.slice(0),this.listeners("connect").forEach(e=>t.on("connect",e)),this.listeners("connection").forEach(e=>t.on("connection",e)),this.children.add(t),this.server._nsps.set(e,t),t}fetchSockets(){throw new Error("fetchSockets() is not supported on parent namespaces")}}(t.ParentNamespace=s).count=0},function(e,t,i){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.serveFile=t.restoreAdapter=t.patchAdapter=void 0;const s=i(676),n=i(88),a=(0,r(i(93)).default)("socket.io:adapter-uws"),{addAll:o,del:c,broadcast:h}=s.Adapter.prototype;function u(e,t,i,r){const s=t.conn.id,n=t.conn.transport.socket;i&&(a("subscribe connection %s to topic %s",s,e),n.subscribe(e)),r.forEach(t=>{a("subscribe connection %s to topic %s",s,t=e+""+t),n.subscribe(t)})}t.patchAdapter=function(e){s.Adapter.prototype.addAll=function(e,t){const i=!this.sids.has(e),r=(o.call(this,e,t),this.nsp.sockets.get(e));r&&("websocket"===r.conn.transport.name?u(this.nsp.name,r,i,t):i&&r.conn.on("upgrade",()=>{var t=this.sids.get(e);t&&u(this.nsp.name,r,i,t)}))},s.Adapter.prototype.del=function(e,t){var i;c.call(this,e,t),(e=this.nsp.sockets.get(e))&&"websocket"===e.conn.transport.name&&(i=e.conn.id,e=e.conn.transport.socket,t=this.nsp.name+""+t,a("unsubscribe connection %s from topic %s",i,t),e.unsubscribe(t))},s.Adapter.prototype.broadcast=function(t,i){if(i.rooms.size<=1&&0===i.except.size){var r=i.flags||{};const s={preEncoded:!0,volatile:r.volatile,compress:r.compress},n=(t.nsp=this.nsp.name,this.encoder.encode(t)),o=0===i.rooms.size?this.nsp.name:this.nsp.name+""+i.rooms.keys().next().value;a("fast publish to %s",o),n.forEach(t=>{var i="string"!=typeof t;e.publish(o,i?t:"4"+t,i)}),this.apply(i,e=>{"websocket"!==e.conn.transport.name&&e.client.writeToEngine(n,s)})}else h.call(this,t,i)}},t.restoreAdapter=function(){s.Adapter.prototype.addAll=o,s.Adapter.prototype.del=c,s.Adapter.prototype.broadcast=h};t.serveFile=function(e,t){const i=(0,n.statSync)(t).size,r=(0,n.createReadStream)(t),s=()=>!r.destroyed&&r.destroy();e.onAborted(s),r.on("data",t=>{const s=(e=>{var{buffer:e,byteOffset:t,byteLength:i}=e;return e.slice(t,t+i)})(t),n=e.getWriteOffset();var[t,a]=e.tryEnd(s,i);a||t||(r.pause(),e.onWritable(t=>{var[t,a]=e.tryEnd(s.slice(t-n),i);return!a&&t&&r.resume(),t}))}).on("error",e=>{throw s(),e}).on("end",s)}},function(e){e.exports=JSON.parse('{"name":"socket.io","version":"4.5.4","description":"node.js realtime framework server","keywords":["realtime","framework","websocket","tcp","events","socket","io"],"files":["dist/","client-dist/","wrapper.mjs","!**/*.tsbuildinfo"],"directories":{"doc":"docs/","example":"example/","lib":"lib/","test":"test/"},"type":"commonjs","main":"./dist/index.js","exports":{"import":"./wrapper.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"},"types":"./dist/index.d.ts","license":"MIT","repository":{"type":"git","url":"git://github.com/socketio/socket.io"},"scripts":{"compile":"rimraf ./dist && tsc","test":"npm run format:check && npm run compile && npm run test:types && npm run test:unit","test:types":"tsd","test:unit":"nyc mocha --require ts-node/register --reporter spec --slow 200 --bail --timeout 10000 test/index.ts","format:check":"prettier --check \\"lib/**/*.ts\\" \\"test/**/*.ts\\"","format:fix":"prettier --write \\"lib/**/*.ts\\" \\"test/**/*.ts\\"","prepack":"npm run compile"},"dependencies":{"accepts":"~1.3.4","base64id":"~2.0.0","debug":"~4.3.2","engine.io":"~6.2.1","socket.io-adapter":"~2.4.0","socket.io-parser":"~4.2.1"},"devDependencies":{"@types/mocha":"^9.0.0","expect.js":"0.3.1","mocha":"^10.0.0","nyc":"^15.1.0","prettier":"^2.3.2","rimraf":"^3.0.2","socket.io-client":"4.5.4","socket.io-client-v2":"npm:socket.io-client@^2.4.0","superagent":"^8.0.0","supertest":"^6.1.6","ts-node":"^10.2.1","tsd":"^0.21.0","typescript":"^4.4.2","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.0.0"},"contributors":[{"name":"Guillermo Rauch","email":"rauchg@gmail.com"},{"name":"Arnout Kazemier","email":"info@3rd-eden.com"},{"name":"Vladimir Dronnikov","email":"dronnikov@gmail.com"},{"name":"Einar Otto Stangvik","email":"einaros@gmail.com"}],"engines":{"node":">=10.0.0"},"tsd":{"directory":"test"}}')},function(e,t,i){const r=i(0);e.exports=class{constructor(e){this.keyLimit=100,this.bodyLimit=20<<20,this.contentType=null,this.timeout=1e4,e&&this.fromOptions(e)}fromOptions(e){return r(e),null!=e.keyLimit&&(r("number"==typeof e.keyLimit),this.keyLimit=e.keyLimit),null!=e.bodyLimit&&(r("number"==typeof e.bodyLimit),this.bodyLimit=e.bodyLimit),null!=e.contentType&&(r("string"==typeof e.contentType),this.contentType=e.contentType),this}}},function(e,t,i){const r=i(679),s=i(625).StringDecoder;e.exports=async function(e,t){let i=Object.create(null);if("GET"!==e.method){let h=e.contentType;if("bin"!==(h=t.contentType?t.contentType:h)){var n=await(a=e,o="utf8",c=t,new Promise((e,t)=>{{var i=a,r=c,n=e,h=t;const u=new s(o);let l=!1,p=0,d="";const f=()=>{i.removeListener("data",m),i.removeListener("error",g),i.removeListener("end",y),null!=v&&(v=null,clearTimeout(v))},m=e=>{p+=e.length,l=!0,p>r.bodyLimit?h(new Error("Request body overflow.")):d+=u.write(e)},g=e=>{f(),h(e)},y=()=>{f(),n(l?d:null)};let v=setTimeout(()=>{v=null,f(),h(new Error("Request body timed out."))},r.timeout);i.on("data",m),i.on("error",g),i.on("end",y)}}));if(n)switch(h){case"json":if(!(i=JSON.parse(n))||"object"!=typeof i||Array.isArray(i))throw new Error("JSON body must be an object.");break;case"form":i=r.parsePairs(n,t.keyLimit)}}}var a,o,c;return i}},function(e,t,i){const{generateKey:r,verifyObj:s}=i(72),n=i(67),a=i(6);e.exports=class{constructor(e){this.wdb=e}async call(e,t,i){try{var o,c=t.body.sig,h=n.getHmac(t.options.cid||"",this.wdb.keys.hmacSalt).token,u=r(a.hash256(Buffer.from(h)));if(!this.wdb.options.devMode&&!s({method:t.body.method,params:t.body.params,cid:t.body.cid,wid:t.body.wid},c,u.public))return o={result:null,code:404,error:{type:"HmacError",message:"Verify Error"}},i.send(404,o,"json"),{interrupt:!0,result:null};if(!(t.options.auth&&t.options.authWid==t.options.wid||(this.wdb.options.devMode||await this.wdb.auth(t.options.cid,t.options.token),t.body.method&&"wallet.create"===t.body.method))){var l=await this.wdb.get(t.options.wid);if(!l)return i.send(404,{result:null,code:404,error:{type:"HmacError",message:"Not Found Wallet"}},"json"),{interrupt:!0,result:null};this.wdb.logger.info("Successful auth for %s on %s.",t.options.cid,t.options.wid),t.options.auth=!0,t.options.authWid=t.options.wid,t.wallet=l}return{interrupt:!1}}catch(e){return this.wdb.logger.info("Auth failure for %s on %s: %s.",t.options.cid,t.options.wid,e.message),i.send(403,{result:null,code:403,error:{type:"HmacError",message:"Hmac Auth failure."}},"json"),{interrupt:!0,result:null}}}}},function(e,t){e.exports=class{async call(e,t,i){return e.node.config.devMode||e.node.acl.canAccess(t.body.method,t.options.cid)?{interrupt:!1}:(i.send(407,{result:null,code:407,error:{type:"ACLError",message:"TerminalNo Authentication Required."}},"json"),{interrupt:!0,result:null})}}},function(e,t){e.exports=class{constructor(e,t){this.routes=e,this.openapi=t}async call(e,t,i){switch(t.options.mode){case"web":if(0===t.pathname.indexOf("/public/")){var r=this.routes.getHandlers(t.method);if(!r)return{interrupt:!0,result:null};for(const n of r){var s=n.match(t.pathname);if(s){t.params=s;try{return{interrupt:!0,result:{code:0,error:null,result:await n.call(t,i)}}}catch(e){i.error(500,e)}return{interrupt:!0,result:null}}}}else if(r=this.openapi[t.body.method]){try{return{interrupt:!0,result:{code:0,error:null,result:await e.node.conn_s2local.execute(r.name,t.body.params,t)}}}catch(e){i.error(500,e)}return{interrupt:!0,result:null}}break;case"ws":if(r=this.openapi[t.body.method])return{interrupt:!0,result:{code:0,error:null,result:await e.node.conn_s2local.execute(r.name,t.body.params,t)}}}return{interrupt:!1}}}},function(e,t,i){const r=i(0),s=i(2),n=i(6),a=i(158);e.exports=class{constructor(e){r(e,"Basic auth requires options."),this.user=e.username,this.pass=e.password,this.realm=e.realm,null!=this.user&&(r("string"==typeof this.user),r(this.user.length<=255,"Username too long."),r(s.isAscii(this.user),"Username must be ASCII."),this.user=n.hash256(Buffer.from(this.user,"ascii"))),r("string"==typeof this.pass),r(this.pass.length<=255,"Password too long."),r(s.isAscii(this.pass),"Password must be ASCII."),this.pass=n.hash256(Buffer.from(this.pass,"ascii")),this.realm||(this.realm="server"),r("string"==typeof this.realm)}fail(e){e.setHeader("WWW-Authenticate",`Basic realm="${this.realm}"`),e.send(401,{result:null,code:401,error:{type:"AuthError",message:"Unauthorized."}},"json"),e.end()}async call(e,t,i){if(!e.node.config.devMode&&!t.options.auth){if(this.user){if(255<t.options.user.username.length)return this.fail(i),{interrupt:!0,result:null};const e=Buffer.from(t.options.user.username,"ascii"),r=n.hash256(e);if(!a(r,this.user))return this.fail(i),{interrupt:!0,result:null}}if(!t.options.user||!t.options.user.password||255<t.options.user.password.length)return this.fail(i),{interrupt:!0,result:null};const e=Buffer.from(t.options.user.password,"ascii"),r=n.hash256(e);if(!a(r,this.pass))return this.fail(i),{interrupt:!0,result:null};t.options.auth=!0}return{interrupt:!1}}}},function(e,t,i){const r=i(2),s=i(77),n=i(78).errors,a=i(80),o=i(121),{getBlockOverview:c,getBlockByHash:h,formatTimestamp:u}=i(626);async function l(e,t){if(e.valid(),!(e=await this.chain.tip))throw new s(n.MISC_ERROR,"Block not found");if(e=await h(this.node,e.hash,t))return e.chain="VNS",e.network="main"===this.node.network.type?"mainnet":"testnet",e}e.exports=[{name:"blocks",method:"get",path:"/public/block",callback:async function(e,t){var i,r=this,s=(e=e.valid()).str("blockDate"),n=e.str("startTimestamp",""),a=(e=e.uint("limit",10),u(new Date));if(s){if(!/\d{4}-\d{2}-\d{2}/.test(s))throw new Error("Please use yyyy-mm-dd format");i=s===a}else s=a,i=!0;a=Math.round(new Date(s).getTime()/1e3),n=parseInt(n)||a+86400;var o=u(new Date(1e3*(a-86400))),c=n?u(new Date(1e3*n)):null,l=(e=parseInt(e||200),!1),p=n;try{var d,f=await r.chain.db.getTimestampHashes(n,a);let u=[];for(d of f)u.push(d.hash);u.reverse(),u.length>e&&(l=!0,u=u.slice(0,e));var m,g={blocks:[],length:u.length,pagination:{next:c,prev:o,currentTs:n-1,current:s,isToday:i,more:l,moreTs:l?p:void 0}};for(m of u){var y=await h(r,m,t);y.chain="VNS",y.network="main"===r.node.network.type?"mainnet":"testnet",g.blocks.push(y)}return g.blocks.sort((e,t)=>t.height-e.height),g.blocks}catch(e){throw e}}},{name:"block-tip",method:"get",path:"/public/block/tip",callback:l},{name:"blocks",method:"get",path:"/public/blocks",callback:async function(e,t){var i,r=(e=e.valid()).str("blockDate"),s=e.str("startTimestamp",""),n=(e=e.uint("limit",10),u(new Date));if(r){if(!/\d{4}-\d{2}-\d{2}/.test(r))throw new Error("Please use yyyy-mm-dd format");i=r===n}else r=n,i=!0;n=Math.round(new Date(r).getTime()/1e3),s=parseInt(s)||n+86400;var a=u(new Date(1e3*(n-86400))),o=s?u(new Date(1e3*s)):null,c=(e=parseInt(e||200),!1),l=s;try{var p,d=await this.chain.db.getTimestampHashes(s,n);let u=[];for(p of d)u.push(p.hash);u.reverse(),u.length>e&&(c=!0,u=u.slice(0,e));var f,m={blocks:[],length:u.length,pagination:{next:o,prev:a,currentTs:s-1,current:r,isToday:i,more:c,moreTs:c?l:void 0}};for(f of u){var g=await h(this,f,t);m.blocks.push(g)}return m.blocks.sort((e,t)=>t.height-e.height),m}catch(e){throw e}}},{name:"block-index",method:"get",path:"/public/block-index/:height",callback:async function(e,t){var i=this;if(-1===(e=(e=e.valid()).uint("height")))throw new s(n.TYPE_ERROR,"Invalid block height.");if(!(e=await i.chain.getEntry(e)))throw new s(n.MISC_ERROR,"Block not found");if(i=await h(i.node,e.hash,t))return i}},{name:"block-tip",method:"get",path:"/public/block-tip",callback:l},{name:"block",method:"get",path:"/public/block/:blockHash",callback:async function(e,t){if(e=(e=e.valid()).str("blockHash"),e=await h(this.node,e,t))return e.chain="VNS",e.network="main"===this.node.network.type?"mainnet":"testnet",e}},{name:"getBlock",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new a([t])).str(0),h(e,t)}},{name:"rawblock",method:"get",path:"/public/rawblock/:param",callback:async function(e,t){var i=this;let a=(e=e.valid()).str("param");if(a=r.checkNum(a)?parseInt(a):r.revHex(a),e=await i.chain.getBlock(a))return e.toRaw().toString("hex");if(i.chain.options.spv)throw new s(n.MISC_ERROR,"Block not available (spv mode)");if(i.chain.options.prune)throw new s(n.MISC_ERROR,"Block not available (pruned data)");throw new s(n.DATABASE_ERROR,"Can't read block from disk")}},{name:"getRawBlock",method:"jsonp",path:"/",callback:async function(e,t){let i=(t=new a([t])).str(0);return r.checkNum(i)&&(i=parseInt(i)),(t=await e.chain.getBlock(i))?t.toRaw().toString("hex"):null}},{name:"isSynced",method:"jsonp",path:"/",callback:async function(e,t){return e.chain.synced}},{name:"getBlockOverview",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new a([t])).str(0),c(e,t)}},{name:"getInfo",method:"jsonp",path:"/",callback:async function(e,t){var i=await e.rpc.execute({corba:!0,method:"miner.difficulty"});return{blocks:e.chain.height,connections:e.pool.peers.size(),timeoffset:0,proxy:"",testnet:"main"!==e.network.type,errors:"",network:e.network.type,relayFee:0,version:"bitcore-1.1.2",protocolversion:700001,difficulty:i}}},{name:"getBestHeight",method:"jsonp",path:"/",callback:async function(e,t){return e.chain.height}},{name:"getBlockHeader",method:"jsonp",path:"/",callback:async function(e,t){var i=(t=new a([t])).hash(0);t=t.bool(1,!0);if(!i)throw new s(n.MISC_ERROR,"Invalid block hash.");if(!(i=await e.chain.getEntry(i)))throw new s(n.MISC_ERROR,"Block not found");if(!t)return i.toRaw().toString("hex",0,80);t=await e.chain.getMedianTime(i);var c=await e.chain.getNextHash(i.hash);return{hash:i.rhash(),confirmations:e.chain.height-i.height+1,height:i.height,version:i.version,versionHex:r.hex32(i.version),merkleroot:r.revHex(i.merkleRoot),time:i.time,mediantime:t,bits:i.bits,difficulty:o.bits2Diff(i.bits),chainwork:i.chainwork.toString("hex",64),previousblockhash:i.prevBlock!==encoding.NULL_HASH?r.revHex(i.prevBlock):null,nextblockhash:c?r.revHex(c):null}}}]},function(e){e.exports=JSON.parse('[{"poolName":"50BTC","url":"https://50btc.com/","searchStrings":["50BTC.com","50btc.com"]},{"poolName":"175btc","url":"http://www.175btc.com/","searchStrings":["Mined By 175btc.com"]},{"poolName":"ASICminer","url":"https://bitcointalk.org/index.php?topic=99497.0","searchStrings":["Mined By ASICMiner"]},{"poolName":"AntMiner","url":"https://bitmaintech.com/","searchStrings":["AntPool"]},{"poolName":"agentD","url":"http://","searchStrings":["agentD"]},{"poolName":"Bitfury","url":"http://bitfury.org/","searchStrings":["2av0id51pct"]},{"poolName":"BitMinter","url":"https://bitminter.com/","searchStrings":["BitMinter"]},{"poolName":"Bitparking","url":"http://bitparking.com/","searchStrings":["bitparking"]},{"poolName":"BTC Guild","url":"https://www.btcguild.com/","searchStrings":["Mined by BTC Guild","BTC Guild"]},{"poolName":"bcpool.io","url":"https://bcpool.io/","searchStrings":["bcpool"]},{"poolName":"Discus Fish","url":"http://f2pool.com/","searchStrings":["七彩神仙鱼","Made in China","Mined by user"]},{"poolName":"Discus Fish Solo","url":"http://f2pool.com/","searchStrings":["For Pierce and Paul"]},{"poolName":"Cointerra","url":"http://cointerra.com/","searchStrings":["cointerra"]},{"poolName":"Eligius","url":"http://eligius.st/","searchStrings":["Eligius"]},{"poolName":"EclipseMC","url":"https://eclipsemc.com/","searchStrings":["Josh Zerlan was here!","EclipseMC","Aluminum Falcon"]},{"poolName":"GIVE-ME-COINS","url":"https://give-me-coins.com/","searchStrings":["Mined at GIVE-ME-COINS.com"]},{"poolName":"ghash.io","url":"https://ghash.io/","searchStrings":["ghash.io","GHash.IO"]},{"poolName":"HHTT","url":"http://hhtt.1209k.com/","searchStrings":["HHTT"]},{"poolName":"KNCminer","url":"https://www.kncminer.com/","searchStrings":["KnCMiner"]},{"poolName":"Megabigpower","url":"http://megabigpower.com/","searchStrings":["megabigpower.com"]},{"poolName":"MultiCoin","url":"https://multicoin.co/","searchStrings":["MultiCoin.co"]},{"poolName":"Mt Red","url":"https://mtred.com/","searchStrings":["/mtred/"]},{"poolName":"MaxBTC","url":"https://www.maxbtc.com","searchStrings":["MaxBTC"]},{"poolName":"NMCbit","url":"http://nmcbit.com/","searchStrings":["nmcbit.com"]},{"poolName":"ozcoin","url":"https://ozco.in/","searchStrings":["ozco.in","ozcoin"]},{"poolName":"Polmine.pl","url":"https://polmine.pl","searchStrings":["by polmine.pl"]},{"poolName":"simplecoin","url":"http://simplecoin.us/","searchStrings":["simplecoin.us ftw"]},{"poolName":"SlushPool","url":"https://slushpool.com/","searchStrings":["/slush/"]},{"poolName":"TripleMining","url":"https://www.triplemining.com/","searchStrings":["Triplemining.com"]},{"poolName":"wizkid057","url":"http://wizkid057.com/btc","searchStrings":["wizkid057"]},{"poolName":"Yourbtc.net","url":"http://yourbtc.net/","searchStrings":["yourbtc.net"]},{"poolName":"BTCChina Pool","url":"https://pool.btcchina.com/","searchStrings":["BTCChina Pool","btcchina.com"]},{"poolName":"BTCC Pool","url":"https://pool.btcc.com/","searchStrings":["/BTCC/"]}]')},function(e,t,i){const{utxo:r,_setOutputResults:s,_setInputResults:n,transformTransaction:a,getDetailFromMeta:o,translateOutputAddress:c}=i(626),h=i(33),u=i(80),l=i(2);async function p(e,t){var i=(t=new u([t])).array(0,[]),r=t.obj(1,{}),s=(r.from=r.from||0,r.to=r.to||4294967295,[]);t=await e.getMetaByAddress(i);let n=0;for(const i of t){if(n<r.from);else{if(n>=r.to)break;var a=await o(e,i);s.push(a)}n++}return{totalCount:t.length,items:s}}async function d(e,t){let i=(e=e.valid()).str("addr");i=i||e.str("addrs");var r=(e=await this.node.getCoinsByAddress(i.split(","))).reduce((e,t)=>e+t.value,0);return{confirmed:r-(e=e.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0)),unconfirmed:e,balance:r}}async function f(e,t){let i=(e=e.valid()).str("addr");var r,s=[];for(r of(i=i||e.str("addrs")).split(",")){var n=(a=await this.node.getCoinsByAddress(r)).reduce((e,t)=>e+t.value,0),a=a.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0);s.push({param:r,result:{confirmed:n-a,unconfirmed:a,balance:n}})}return s}async function m(e,t){let i=(r=e.valid()).str("addr");i=i||r.str("addrs");var r,s=((r={from:parseInt(e.query.from)||parseInt(e.body.from)||0}).to=parseInt(e.query.to)||parseInt(e.body.to)||parseInt(r.from)+10,y(e));try{var n,c=await this.node.getMetaByAddress(i.split(",")),h=[];for(n of c){var u=await o(this.node,n);h.push(await a(this.node,u,s))}return{totalItems:c.length,from:r.from,to:Math.min(r.to,c.length),items:h}}catch(e){throw e}}async function g(e,t){var i=e.valid();let r=i.str("addr");r=r||i.str("addrs");var s=y(e),n=[];try{for(var c of r.split(",")){var h,u=await this.node.getMetaByAddress(c),l=[];for(h of u){var p=await o(this.node,h);l.push(await a(this.node,p,s))}n.push({param:c,result:l})}return n}catch(e){throw e}}function y(e){return{noAsm:!!parseInt(e.query.noAsm),noScriptSig:!!parseInt(e.query.noScriptSig),noSpent:!!parseInt(e.query.noSpent)}}async function v(e,t){let i=(e=e.valid()).str("addrs");i=i||e.str("addr","");try{var s,n=[];for(s of await r(this.node,i.split(",")))n.push(w(this,s));return n}catch(e){throw e}}async function b(e,t){let i=(e=e.valid()).str("addrs");i=i||e.str("addr","");try{var s,n=[];for(s of i.split(",")){var a,o=[];for(a of await r(this.node,s))o.push(w(this,a));n.push({param:s,result:o})}return n}catch(e){throw e}}function w(e,t){var i={address:c(t.address),txid:l.revHex(t.txid),vout:t.vout,scriptPubKey:t.scriptPubKey,amount:t.satoshis/1e8,satoshis:t.satoshis};return t.height&&0<t.height?(i.height=t.height,i.confirmations=e.chain.height-t.height+1):i.confirmations=0,t.timestamp&&(i.ts=t.timestamp),i.chain="VNS",i.network="main"===e.node.network.type?"mainnet":"testnet",i.coinbase=t.coinbase,i.mintTxid=i.txid,i.value=i.satoshis,i.mintIndex=i.vout,i.mintHeight=i.height,i.spentTxid="",i.spentHeight=-2,i.script=i.scriptPubKey,i}async function k(e,t){var i=(e=e.valid()).str("id"),r=(e=e.uint("index",1),this.node.require("walletdb"));if(r&&(r=await r.get("primary"),await r.ensureAccount({name:i,witness:!0}),r=await r.createReceive(i,e)))return r.toJSON().address}async function x(e,t,i){i=i||{};var r={totalCount:0,items:[]};let a=0;for(const s of await e.node.getMetaByAddress(t)){if(i.from&&a<i.from);else{if(i.to&&a>=i.to)break;var u=await o(e.node,s);r.items.push(u)}a++}r.totalCount=r.items.length;for(var p={addrStr:t,balance:0,balanceSat:0,totalReceived:0,totalReceivedSat:0,totalSent:0,totalSentSat:0,unconfirmedBalance:0,unconfirmedBalanceSat:0,unconfirmedTxApperances:0,txApperances:0},d=0;d<r.items.length;d++){var f=r.items[d];s(e,f,t,p),n(e,f,t,p),i.noTxList||(p.transactions||(p.transactions=[]),p.transactions.push(l.revHex(f.txid())))}return p.balance=h.fromSatoshis(p.balanceSat).toBTC(),p.totalReceived=h.fromSatoshis(p.totalReceivedSat).toBTC(),p.totalSent=h.fromSatoshis(p.totalSentSat).toBTC(),p.unconfirmedBalance=h.fromSatoshis(p.unconfirmedBalanceSat).toBTC(),p.addrStr&&(p.addrStr=c(p.addrStr)),p}e.exports=[{name:"address.reflect",method:"get",path:"/public/addr/reflect/:id",callback:k},{name:"address.reflect.index",method:"get",path:"/public/addr/reflect/:id/:index",callback:k},{name:"getInfo",method:"get",path:"/public/addr/:addr",callback:async function(e,t){var i=(i=e.valid()).str("addr"),r={noTxList:parseInt(e.query.noTxList)};e.query.from&&e.query.to?(r.from=parseInt(e.query.from),r.to=parseInt(e.query.to)):(r.from=0,r.to=10);try{return await x(this,i,r)}catch(e){throw e}}},{name:"getUTXOByAddress",method:"get",path:"/public/addr/:addr/utxo",callback:v},{name:"getTXSByAddress",method:"get",path:"/public/address/:addr/txs",callback:m},{name:"getUTXOByAddress",method:"get",path:"/public/address/:addr/utxo",callback:v},{name:"getUTXOByAddresses",method:"get",path:"/public/addrs/:addrs/utxo",callback:v},{name:"postUTXOByAddresses",method:"post",path:"/public/addrs/utxo",callback:v},{name:"getUTXOGroupAddresses",method:"get",path:"/public/addrs/:addrs/grouputxo",callback:b},{name:"postUTXOGroupAddresses",method:"post",path:"/public/addrs/grouputxo",callback:b},{name:"getTXSByAddresses",method:"get",path:"/public/addrs/:addrs/txs",callback:m},{name:"postTXSByAddresses",method:"post",path:"/public/addrs/txs",callback:m},{name:"getTXSGroupAddresses",method:"get",path:"/public/addrs/:addrs/grouptxs",callback:g},{name:"postTXSGroupAddresses",method:"post",path:"/public/addrs/grouptxs",callback:g},{name:"getBalanceByAddress",method:"get",path:"/public/addrs/:addrs/balance",callback:d},{name:"postBalanceByAddress",method:"post",path:"/public/addrs/balance",callback:d},{name:"getBalanceGroupAddress",method:"get",path:"/public/addrs/:addrs/groupbalance",callback:f},{name:"postBalanceGroupAddress",method:"post",path:"/public/addrs/groupbalance",callback:f},{name:"getBalanceByAddress",method:"get",path:"/public/addr/:addr/balance",callback:async function(e,t){var i=this;let r=(e=e.valid()).str("addr");r=r||e.str("addrs"),e=await i.node.getCoinsByAddress(r.split(","));var s=(i=e.reduce((e,t)=>e+t.value,0))-(e=e.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0));return{confirmed:h.fromSatoshis(s).toBTC(),unconfirmed:h.fromSatoshis(e).toBTC(),balance:h.fromSatoshis(i).toBTC()}}},{name:"getBalanceByAddress",method:"get",path:"/public/address/:addr/balance",callback:d},{name:"getUnconfirmedBalance",method:"get",path:"/public/addr/:addr/unconfirmedBalance",callback:async function(e,t){var i=this;let r=(e=e.valid()).str("addr");return r=r||e.str("addrs"),e=await i.node.getCoinsByAddress(r.split(",")),i=e.reduce((e,t)=>(-1==t.height&&(e+=t.value),e),0),h.fromSatoshis(i).toBTC()}},{name:"getTotalReceived",method:"get",path:"/public/addr/:addr/totalReceived",callback:async function(e,t){let i=(e=e.valid()).str("addr");i=i||e.str("addrs");try{return(await x(this,i)).totalReceivedSat}catch(e){throw e}}},{name:"getTotalSent",method:"get",path:"/public/addr/:addr/totalSent",callback:async function(e,t){let i=(e=e.valid()).str("addr");i=i||e.str("addrs");try{return(await x(this,i)).totalSent}catch(e){throw e}}},{name:"getAddressHistory",method:"jsonp",path:"/",callback:p},{name:"getAddressSummary",method:"jsonp",path:"/",callback:async function(e,t){var i=new u([t]),r=i.array(0,[]),a=i.obj(1,{});a.from=a.from||0,a.to=a.to||4294967295;for(var o={addrStr:r,balance:0,balanceSat:0,totalReceived:0,totalReceivedSat:0,totalSent:0,totalSentSat:0,unconfirmedBalance:0,unconfirmedBalanceSat:0,unconfirmedTxApperances:0,txApperances:0},c=(i=await p(e,t)).items,l=0;l<c.length;l++){var d=c[l];s(e,d,r,o),n(e,d,r,o),a.noTxList||(o.transactions||(o.transactions=[]),o.transactions.push(d.txid()))}return o.balance=h.fromSatoshis(o.balanceSat).toBTC(),o.totalReceived=h.fromSatoshis(o.totalReceivedSat).toBTC(),o.totalSent=h.fromSatoshis(o.totalSentSat).toBTC(),o.unconfirmedBalance=h.fromSatoshis(o.unconfirmedBalanceSat).toBTC(),o}},{name:"getAddressUnspentOutputs",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new u([t])).array(0,[]),e=await r(e,t)}},{name:"getTxidsByAddress",method:"jsonp",path:"/",callback:async function(e,t){var i=(t=new u([t])).array(0);t=t.str(1,"both");return e.chain.getHashesByAddress(i,t)}}]},function(e,t,i){var r=i(83);const s=i(33),n=i(80);var a=i(331),o=0,c=Date.now();async function h(e){var t=await e.rpc.execute({corba:!0,method:"miner.difficulty"});return{blocks:e.chain.height,connections:e.node.pool.peers.size,timeoffset:0,proxy:"",testnet:"main"!==e.node.network.type,errors:"",network:e.node.network.type,relayFee:0,version:"gamegold-"+r.version,protocolversion:700001,difficulty:t}}e.exports=[{name:"getStatus",method:"get",path:"/public/status",callback:async function(e,t){switch(e.query.q){case"getDifficulty":try{return{difficulty:(await h(this)).difficulty}}catch(e){throw e}break;case"getLastBlockHash":var i=await this.chain.db.getTip();return{syncTipHash:i.hash,lastblockhash:i.hash};case"getBestBlockHash":try{return{bestblockhash:await this.rpc.execute({corba:!0,method:"block.best"})}}catch(e){throw e}break;default:try{return{info:await h(this)}}catch(e){throw e}}}},{name:"getSync",method:"get",path:"/public/sync",callback:async function(e,t){var i="syncing";try{this.chain.synced&&(i="finished");var r=(100*this.chain.getProgress()).toFixed(2);return{status:i,blockChainHeight:this.chain.height,syncPercentage:Math.round(r),height:this.chain.height,error:null,type:"gamegold node"}}catch(e){throw e}}},{name:"getVersion",method:"get",path:"/public/version",callback:async function(e,t){return{version:r.version}}},{name:"getPeer",method:"get",path:"/public/peer",callback:function(e,t){var i=this.pool.getLoader()||{connected:!1,address:{host:null,port:null}};return{connected:i.connected,host:i.address.host,port:i.address.port}}},{name:"getPeers",method:"get",path:"/public/peers",callback:async function(e,t){return this.rpc.execute({corba:!0,method:"sys.peerinfo"})}},{name:"getEstimateFee",method:"get",path:"/public/utils/estimatefee",callback:function(e,t){e=(e.query.nbBlocks||"2").split(",");try{var i,r={};for(i of e){var n=parseInt(i);let e=this.fees.estimateFee(n,!1);0===e&&(e=-1),e=s.btc(e,!0),r[n]=e}return r}catch(e){throw e}}},{name:"estimateFee",method:"jsonp",path:"/",callback:function(e,t){t=(t=new n([t])).array(0,["2"]);try{var i,r={};for(i of t){var a=parseInt(i);let t=e.fees.estimateFee(a,!1);0===t&&(t=-1),t=s.btc(t,!0),r[a]=t}return r}catch(t){throw t}}},{name:"currency",method:"get",path:"/public/currency",callback:async function(e,t){var i=Date.now();if(!(0===o||c+6e5<=i))return{status:200,data:{bitstamp:o}};c=i;try{var r=await new Promise((e,t)=>{a("https://www.bitstamp.net/api/ticker/",(function(i,r,s){i&&t(i),i||200!==r.statusCode||e(s)}))});return{status:200,data:{bitstamp:o=parseFloat(JSON.parse(r).last)}}}catch(e){throw e}}},{name:"explorers",method:"get",path:"/public/explorers",callback:async function(e,t){return[{name:"gamegold",ticker:"GG",url:"https://insight.gamegold.xin"}]}},{name:"syncPercentage",method:"jsonp",path:"/",callback:async function(e,t){return Math.round((100*e.chain.getProgress()).toFixed(2))}},{name:"sysEcho",method:"jsonp",path:"/",callback:function(e,t){return 0}},{name:"getBestBlockHash",method:"jsonp",path:"/",callback:async function(e,t){return{bestblockhash:e=await e.rpc.execute({corba:!0,method:"block.best"})}}}]},function(e,t,i){const r=i(682),s=i(0),n=i(2),{handleErrors:a,getDetailedTransaction:o,transformTransaction:c,getDetailFromMeta:h,getBlockOverview:u,translateInputAddresses:l}=i(626),p=i(80),d=i(19).opcodes,f=i(6);async function m(e,t){var i,r=[];for(i of e.valid().str("txids").split(","))try{i=n.revHex(i);var s=await this.rpc.execute({method:"tx.raw.get",params:[i,!0]});s&&r.push({param:i,result:s})}catch(e){}return r}async function g(e,t){var i,r=[];for(i of e.valid().str("txids").split(",")){var s,n=await o(this.node,i);n&&((s=await c(this.node,n,{})).chain="VNS",s.coinbase=n.isCoinbase(),s.network="main"===this.node.network.type?"mainnet":"testnet",s.blockTime=s.blocktime,s.blockTimeNormalized=s.blockTime,s.fee=s.fees*Math.pow(10,8),s.blockHash=s.blockhash,s.blockHeight=s.blockheight,s.coinbase=!1,s.inputCount=s.vin.length,s.outputCount=s.vout.length,s.value=s.valueIn*Math.pow(10,8),r.push({parama:i,result:s}))}return r}e.exports=[{name:"getTx",method:"get",path:"/public/tx/:txid",callback:async function(e,t){var i,r=this;return e=(e=e.valid()).hash("txid"),(e=await o(r.node,e))?((i=await c(r.node,e,{})).chain="VNS",i.coinbase=e.isCoinbase(),i.network="main"===r.node.network.type?"mainnet":"testnet",i.blockTime=i.blocktime,i.blockTimeNormalized=i.blockTime,i.fee=i.fees*Math.pow(10,8),i.blockHash=i.blockhash,i.blockHeight=i.blockheight,i.coinbase=!1,i.inputCount=i.vin.length,i.outputCount=i.vout.length,i.value=i.valueIn*Math.pow(10,8),i):null}},{name:"getTxs",method:"get",path:"/public/txids/:txids",callback:g},{name:"getTxs",method:"post",path:"/public/txids",callback:g},{name:"getRawTxs",method:"get",path:"/public/rawtxids/:txids",callback:m},{name:"getRawTxs",method:"post",path:"/public/rawtxids",callback:m},{name:"getSpender",method:"get",path:"/public/tx/:txid/spender/:index",callback:async function(e,t){var i=this,r=(e=e.valid()).hash("txid");e=e.u32("index",0);return s(r,"Hash is required."),s(null!=e,"Index is required."),(i=await i.node.chain.db.getSpender(r,e))&&(i.txid=n.revHex(i.txid)),i}},{name:"getTx",method:"get",path:"/public/tx/:txid/coins",callback:async function(e,t){let i=this;const r=e.valid().hash("txid");let s=await o(i.node,r),a=null;if(s){a=await c(i.node,s,{});let e={inputs:[],outputs:[]},t=0;return s.inputs.map(o=>{var c=a.vin[t];c.coinbase=o.isCoinbase(),c.chain="VNS",c.network="main"===i.node.network.type?"mainnet":"testnet",c.sequenceNumber=o.sequence,c.address=a.vin[t].address||"",c.value=a.vin[t].valueSat||0,c.mintHeight=a.vin[t].mintHeight||0,c.mintTxid=n.revHex(o.prevout.hash),c.mintIndex=o.prevout.index,c.spentTxid=r,c.spentHeight=s.height,c.confirmations=s.confirmations,c.script=o.script.raw.toString("hex"),e.inputs.push(c),t++}),t=0,s.outputs.map(n=>{var o=a.vout[t];o.chain="VNS",o.network="main"===i.node.network.type?"mainnet":"testnet",o.coinbase=s.isCoinbase(),o.mintTxid=r,o.address=a.vout[t].scriptPubKey.addresses?a.vout[t].scriptPubKey.addresses[0]:"",o.spentTxid=a.vout[t].spentTxid||"",o.spentHeight=a.vout[t].spentHeight||0,o.mintIndex=t,o.mintHeight=s.height,o.value=n.value,o.confirmations=s.confirmations,o.script=n.script.raw.toString("hex"),e.outputs.push(o),t++}),e}return null}},{name:"getRawTx",method:"get",path:"/public/rawtx/:txid",callback:async function(e,t){return e=(e=e.valid()).str("txid"),{rawtx:e=await this.rpc.execute({method:"tx.raw.get",params:[e]})}}},{name:"getBlob",method:"get",path:"/public/blob/:txid/:index",callback:async function(e,t){var i=(e=e.valid()).hash("txid");e=e.uint("index");if(!(i=await this.node.getMeta(i))||!i.tx)return null;if(!(i=i.tx.outputs[e]))return null;if(!(e=i.getReturnData([d.OP_PROPEXCHANGE,d.OP_PROPCREATE]))||!e.oid)return null;if(!(i=await this.node.chain.db.erList.query([["erid",e.oid]]))||!i.list||!i.list[0].erid)return null;let r=i.list[0].source.blob;return"string"==typeof r&&(r=JSON.parse(r)),t.setHeader("content-type",r.type),{data:r}}},{name:"notify",method:"post",path:"/public/notify",callback:async function(e,t){return e.body.sign==(delete e.body.sign,e.body.secret=this.node.config.remotesecret,f.hash256(Buffer.from(JSON.stringify(e.body))).toString("hex"))?(delete e.body.secret,console.log("remote notify:",JSON.stringify(e.body)),{code:0}):{code:-1}}},{name:"getList",method:"get",path:"/public/txs",callback:async function(e,t){s(!this.chain.options.spv,"Cannot get TX in SPV mode.");var i,p=e.query.blockHash,d=l(e.query.address),f=(e=parseInt(e.query.pageNum)||0,1);if(p){if(!(p=await u(this.node,p,t)))return a(null,t);t=p.txids.length;var m,g,y=(r.isUndefined(e)?i=p.txids:(m=10*e,i=p.txids.slice(m,10+m),f=Math.ceil(t/10)),[]);for(g of i){var v=await o(this.node,n.revHex(g));v&&y.push(await c(this.node,v,{}))}return{pagesTotal:f,txs:y}}if(d){var b=10*e,w=10*(e+1),k=[];p=await this.node.getMetaByAddress(d);let t=0;for(const e of p){if(t<b);else{if(t>=w)break;var x=await h(this.node,e);k.push(await c(this.node,x,{}))}t++}return{pagesTotal:Math.ceil(p.length/10),txs:k}}throw new Error("Block hash or address expected")}},{name:"block",method:"get",path:"/public/block/:blockHash/coins/:pageSize/:pageNum",callback:async function(e,t){var i=this,p=(s(!i.chain.options.spv,"Cannot get TX in SPV mode."),e.query.blockHash),d=e.params.pageSize?parseInt(e.params.pageSize):100,f=l(e.query.address),m=parseInt(e.params.pageNum)-1||0,g=1;if(p=p||e.params.blockHash){if(!(e=await u(i.node,p,t)))return a(null,t);t=e.txids.length;var y,v=[],b=[],w=(r.isUndefined(m)?y=e.txids:(E=m*d,y=e.txids.slice(E,E+d),g=Math.ceil(t/d)),[]);for(let e of y){let t=await o(i.node,n.revHex(e),!0),r=null;if(t){r=await c(i.node,t,{}),w.push(r);let s=0;t.inputs.map(a=>{a.isCoinbase()||v.push({coinbase:!1,chain:"VNS",network:"main"===i.node.network.type?"mainnet":"testnet",mintTxid:n.revHex(a.prevout.hash),mintIndex:a.prevout.index,spentTxid:e,spentHeight:t.height,confirmations:t.confirmations,sequenceNumber:a.sequence,script:a.script.raw.toString("hex"),address:r.vin[s].addr||"",mintHeight:r.vin[s].mintHeight||0,value:r.vin[s].valueSat||0}),s++}),s=0,t.outputs.map(n=>{b.push({coinbase:t.isCoinbase(),chain:"VNS",network:"main"===i.node.network.type?"mainnet":"testnet",mintTxid:e,address:r.vout[s].scriptPubKey.addresses?r.vout[s].scriptPubKey.addresses[0]:"",spentTxid:r.vout[s].spentTxid||"",spentHeight:r.vout[s].spentHeight||0,mintIndex:s,mintHeight:t.height,value:n.value,confirmations:t.confirmations,script:n.script.raw.toString("hex")}),s++})}}return{txids:y,previous:"",next:m+1<g?`/block/${p}/coins/${d}/`+(m+2):"",inputs:v,outputs:b}}if(f){var k=m*d,x=(m+1)*d,S=[];e=await i.node.getMetaByAddress(f);let t=0;for(const r of e){if(t<k);else{if(t>=x)break;var _=await h(i.node,r);S.push(await c(i.node,_,{}))}t++}var E=Math.ceil(e.length/d);return{txids:y,previous:"",next:`/block/${p}/coins/${d}/`+((m+1)%E+1),pagesTotal:E,inputs:[],outputs:[],txs:S}}throw new Error("Block hash or address expected")}},{name:"getTxSend",method:"get",path:"/public/rawsend/:tx",callback:async function(e,t){return e=(e=e.valid()).str("tx"),e=await this.rpc.execute({method:"tx.raw.send",params:[e]})}},{name:"getDetailedTransaction",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new p([t])).hash(0),o(e,t,!0)}},{name:"getTransaction",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new p([t])).hash(0),e=await o(e,t,!1)}},{name:"getRawTransaction",method:"jsonp",path:"/",callback:async function(e,t){var i=(t=new p([t])).str(0);t=t.bool(1,!1);return e.rpc.execute({method:"tx.raw.get",params:[i,t]})}},{name:"getMempoolTransaction",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new p([t])).hash(0),e.mempool.getTX(t)}}]},function(e,t,i){const r=i(19).opcodes,s=i(31),n=i(2).revHex,a=i(80);e.exports=[{name:"prop.byaddress",method:"get",path:"/public/props/address/:address",callback:async function(e,t){return e=e.valid().str("address"),this.node.chain.db.getVpByAddress(e)}},{name:"prop.bidlist",method:"jsonp",path:"/",callback:async function(e,t){e.bidList||(e.bidList=new s);t=new a([t]);var i=Math.max(0,t.uint(0));return 0==i?(t=t.str(1))?e.bidList.query([["pid",t],["size",e.bidList.getSize()],["page",1]]):e.bidList.query([["size",e.bidList.getSize()],["page",1]]):e.bidList.query([["size",10],["page",i]])}},{name:"propBidlist",method:"get",path:"/public/prop/bidlist/:page",callback:async function(e,t){return this.node.bidList||(this.node.bidList=new s),e=e.valid(),(e=Math.max(0,e.uint("page",0)))?this.node.bidList.query([["size",10],["page",e]]):this.node.bidList.query([["size",this.node.bidList.getSize()],["page",1]])}},{name:"propBidOne",method:"get",path:"/public/prop/bidone/:pid",callback:async function(e,t){return this.node.bidList||(this.node.bidList=new s),(e=e.valid().str("pid"))?this.node.bidList.query([["pid",e],["page",1]]):[]}},{name:"getPropById",method:"jsonp",path:"/",callback:async function(e,t){var i=[],s=(t=new a([t]).str(0),await e.chain.db.propList.getVp(t));if(s){let t=[s.current.hash,s.current.index];for(;;){var o=await e.getMeta(t[0]),c=o.tx;if(!c)break;if(!(c=c.outputs[t[1]]))break;var h=c.getReturnData([r.OP_PROPCREATE,r.OP_PROPEXCHANGE]);if(!h)break;if(h.current={hash:n(t[0]),index:t[1],address:c.getAddress().toString()},h.height=o.height,h.status=s.pst,h.pst=s.pst,h.gold=s.gold,0==i.length&&s.bid&&(h.bid=s.bid),i.push(h),!h.prev)break;t=[h.prev.hash,h.prev.index]}}return i}},{name:"prop.get",method:"get",path:"/public/prop/:pid",callback:async function(e,t){var i=[],s=(e=e.valid().str("pid"),await this.node.chain.db.propList.getVp(e));if(s){let e=[s.current.hash,s.current.index];for(;;){var a=await this.node.getMeta(e[0]);if(!a||!a.tx)break;var o=a.tx.outputs[e[1]];if(!o)break;var c=o.getReturnData([r.OP_PROPCREATE,r.OP_PROPEXCHANGE]);if(!c)break;if(c.current={hash:n(e[0]),index:e[1],address:o.getAddress().toString()},c.height=a.height,c.status=s.pst,c.pst=s.pst,c.gold=s.gold,0==i.length&&s.bid&&(c.bid=s.bid),i.push(c),!c.prev)break;e=[c.prev.hash,c.prev.index]}}return i}},{name:"props.post",method:"post",path:"/public/props",callback:async function(e,t){var i,s={};for(i of e.valid().str("pids").split(",")){var a,o,c,h=await this.node.chain.db.propList.getVp(i);h&&(a=await this.node.getMeta(h.current.hash))&&a.tx&&(o=a.tx.outputs[h.current.index])&&(c=o.getReturnData([r.OP_PROPCREATE,r.OP_PROPEXCHANGE]))&&(c.current={hash:n(h.current.hash),index:h.current.index,address:o.getAddress().toString()},c.height=a.height,c.status=h.pst,c.pst=h.pst,c.gold=h.gold,h.bid&&(c.bid={fixed:h.bid.fixed,period:h.bid.period,hash:h.bid.hash,value:h.bid.value,address:h.bid.address}),s[h.pid]=c)}return s}}]},function(e,t,i){const r=i(80);e.exports=[{name:"cp.remoteQuery",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).array(0,[]),e.chain.db.cpList.query(t)},remoteCb:async function(e){if(e&&Array.isArray(e.list))for(var t of e.list)this.wdb.cpList.getItem(t.cid)||await this.wdb.cpList.addItem(t);return e}},{name:"cps",method:"get",path:"/public/cps",callback:async function(e,t){return e={page:e.valid().u32("page",1),pageCount:0},{list:this.chain.db.cpList.getCPList([],e),cur:e.page,page:e.pageCount}}},{name:"cpById",method:"get",path:"/public/cp/:id",callback:async function(e,t){var i=(e=e.valid()).u32("page",1);e=e.str("id");return(e=this.chain.db.cpList.getCPList(e?[e]:[],{page:i}))&&0<e.length?e[0]:null}},{name:"cpByName",method:"get",path:"/public/cp/name/:name",callback:async function(e,t){var i=(e=e.valid()).u32("page",1);e=decodeURIComponent(e.str("name"));return(e=this.chain.db.cpList.getCPListByName(e?[e]:[],{page:i}))&&0<e.length?e[0]:null}}]},function(e,t,i){const r=i(80),s=i(100),n=i(77),a=i(78).errors,o=i(67),c=i(5).ContractStatus,h=i(20),u=i(33);e.exports=[{name:"token.random",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(1!==t.length)throw new n(a.MISC_ERROR,"token.random clientNo: 生成令牌随机量 终端编码");return t=new r([t]).str(0),t=o.getHmac(t,e.keys.hmacSalt).random}},{name:"mempool.watch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.join("mempool")}},{name:"mempool.unwatch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.leave("mempool")}},{name:"chain.watch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.join("chain")}},{name:"chain.unwatch",method:"jsonp",path:"/",callback:async function(e,t,i){i&&i.leave("chain")}},{name:"chain.rescan",method:"jsonp",path:"/",callback:async function(e,t,i){if(null==(t=new r([t]).numhash(0)))throw new Error("Invalid parameter.");return e.http.scan(i,t)}},{name:"subscribe",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i&&Array.isArray(t))for(var r of t)i.bus.subscribe(r);return!0}},{name:"unsubscribe",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i&&Array.isArray(t))for(var r of t)i.bus.unsubscribe(r);return!0}},{name:"filter.set",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i){if(t=new r([t]).buf(0))return i.filter=s.fromRaw(t),null;throw new Error("Invalid parameter.")}}},{name:"filter.reset",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){i&&(i.filter=null)}},{name:"filter.add",local:!0,method:"jsonp",path:"/",callback:async function(e,t,i){if(i){var s=new r([t]).array(0);if(!s)throw new Error("Invalid parameter.");if(!i.filter)throw new Error("No filter set.");for(let t=0;t<s.length;t++){var n=s[t];if(!n)throw new Error("Bad data chunk.");i.filter.add(n),e.spv&&e.pool.watch(n)}}}},{name:"canExecute",method:"jsonp",path:"/",callback:async function(e,t){return(t=new r([t]).obj(0,{})).confirm||"cpChange"==t.oper?e.chain.db.cpList.canExecute(t):await e.mempool.cpMemList.canExecute(t)&&await e.chain.db.cpList.canExecute(t)}},{name:"contract.list",method:"jsonp",path:"/",callback:async function(e,t){var i,s,n,a;return 0==t.length?"contract.list type page ids size: 查询并返回交易对 交易类型 指定查询的ID数组 页码":(a=(t=new r([t])).uint(0,1),i=t.uint(1,1),s=t.array(2,[]),t=t.int(3,10),(n=[]).push(["transStatus",c.CreatedOnMem]),a&&n.push(["type",a]),0<s.length&&n.push(["id","include",s]),{pageNum:(a=e.chain.db.transactionList.where(n).paginate(t,i)).pageNum,pageCur:a.pageCur,list:a.records()})},remoteCb:async function(e){if(e&&Array.isArray(e.list))for(var t of e.list)this.wdb.transactionList.saveContract(t,!0);return e}},{name:"block.tip",method:"jsonp",path:"/",callback:async function(e,t){return e.chain.tip.toRaw()}},{name:"block.entry",method:"jsonp",path:"/",callback:async function(e,t){if(null==(t=new r([t]).numhash(0)))throw new Error("Invalid parameter.");return(t=await e.chain.getEntry(t))&&await e.chain.isMainChain(t)?t.toRaw():null}},{name:"$tx.broadcast",method:"jsonp",path:"/",callback:async function(e,t,i){t=new r([t]).buf(0),t=h.fromRaw(t),await e.sendTX(t)}},{name:"$estimate.fee",method:"jsonp",path:"/",callback:async function(e,t){if(t=new r([t]).u32(0,1),e.fees)return 0===(e=e.fees.estimateFee(t,!1))?-1:u.btc(e,!0);throw new n(a.MISC_ERROR,"Fee estimation not available.")}}]},function(e,t,i){const r=i(80),s=i(784);e.exports=[{name:"ca.get",method:"get",path:"/public/ca/:erid",callback:async function(e,t){return e=e.valid().str("erid"),(e=await this.node.chain.db.erList.query([["erid",e]])).height=this.node.chain.height,e}},{name:"ca.byId",method:"jsonp",path:"/",callback:async function(e,t){return t=new r([t]).str(0),e.chain.db.erList.getEr(t)}},{name:"ca.rank",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).str(0,""),(e=await(async e=>new Promise((t,i)=>{s(e,.85,1e-4,(function(e,r){e?i(e):t(r)}))}))(e.chain.db.enCpList.rank))[t]},remoteCb:async function(e){return e}},{name:"ca.list",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).array(0,[]),(t=await e.chain.db.erList.query(t)).height=e.chain.height,t}},{name:"ca.verify",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).str(0,""),(t=await e.chain.db.caVerify(t))&&(t.curHeight=e.chain.height),t},remoteCb:async function(e){return e}},{name:"ca.list.ab",method:"jsonp",path:"/",callback:async function(e,t){return t=(t=new r([t])).array(0,[]),e.chain.db.erAbList.query(t)},remoteCb:async function(e){return e}}]},function(e,t,i){"use strict";class r{constructor(e,t,i,r,s){this.outgoingNodes=e,this.linkProb=t,this.tolerance=i,this.callback=r,this.pageCount=Object.keys(this.outgoingNodes).length,this.coeff=(1-t)/this.pageCount,this.probabilityNodes=e instanceof Array?[]:{},this.incomingNodes=e instanceof Array?[]:{},this.debug=s,this.startRanking()}startRanking(){var e,t,i,r=1/this.pageCount,s=this.outgoingNodes;for(e in s)for(t in this.probabilityNodes[e]=r,s[e])i=s[e][t],this.incomingNodes[i]||(this.incomingNodes[i]=[]),this.incomingNodes[i].push(e);this.debug&&this.reportDebug(1),this.iterate(1)}reportDebug(e){console.log("____ITERATION "+e+"____"),console.log("Pages: "+Object.keys(this.outgoingNodes).length),console.log("outgoing %j",this.outgoingNodes),console.log("incoming %j",this.incomingNodes),console.log("probability %j",this.probabilityNodes)}iterate(e){var t,i,r,s,n,a=[],o={};for(t in this.probabilityNodes){if(r=0,this.incomingNodes[t])for(i=0;i<this.incomingNodes[t].length;i++)r+=this.probabilityNodes[this.incomingNodes[t][i]]/this.outgoingNodes[this.incomingNodes[t][i]].length;s=this.coeff+this.linkProb*r,n=this.probabilityNodes[t]+this.tolerance,this.probabilityNodes[t]-this.tolerance<=s&&s<=n&&a.push(o[t]=s),this.probabilityNodes[t]=s}return a.length==this.pageCount?this.outgoingNodes instanceof Array?this.callback(null,a):this.callback(null,o):(this.debug&&this.reportDebug(e),this.iterate(++e))}}e.exports=function(e,t,i,s,n=!1){if(e&&t&&i&&s)return new r(e,t,i,s,n);throw new Error("Provide 4 arguments: nodeMatrix, link probability, tolerance, callback")}},function(e,t,i){"use strict";e.exports=class{constructor(e){this.config=e,this.hmacConnection=this.config.array("hmac-connection")||[],this.config.hmacConnection=this.hmacConnection}add(e){-1==this.hmacConnection.indexOf(e)&&this.hmacConnection.push(e),this.config.hmacConnection=this.hmacConnection}del(e){-1!=(e=this.hmacConnection.indexOf(e))&&(this.hmacConnection.splice(e,1),this.config.hmacConnection=this.hmacConnection)}clear(){this.hmacConnection=[],this.config.hmacConnection=this.hmacConnection}content(){return this.hmacConnection}has(e){return-1!=this.hmacConnection.indexOf(e)}}},function(e,t,i){"use strict";
|
|
1694
1694
|
/*!
|
|
1695
1695
|
* mempool/index.js - mempool for vallnet
|
|
1696
1696
|
* Copyright (c) 2019-2022, Bookman Software (MIT License).
|