gamegold 5.7.1 → 5.7.3

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.
@@ -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.1",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
204
+ */t.protocol="vallnet",t.version="5.7.3",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)),this.mode==n.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(a.pid,Object.assign({pid:a.pid,curAddress:o,curGold:a.gold,status:c.Sale},a.bid)))}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))&&(i=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:i.getAddress().toString(),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,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";
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.1",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
214
+ */t.protocol="vallnet",t.version="5.7.3",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)),this.mode==a.Mempool&&(e.node.bidList||(e.node.bidList=new l),e.node.bidList.set(s.pid,Object.assign({pid:s.pid,curAddress:o,curGold:s.gold,status:c.Sale},s.bid)))}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))&&(i=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:i.getAddress().toString(),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,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";
455
455
  /*!
456
456
  * TXRecord.js
457
457
  * Copyright (c) 2019-2022, Bookman Software (MIT License).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gamegold",
3
- "version": "5.7.1",
3
+ "version": "5.7.3",
4
4
  "description": "Vallnet Core",
5
5
  "license": "MIT",
6
6
  "repository": "git://github.com/bookmansoft/gamegold",