gamegold 5.3.1 → 5.3.2

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.
@@ -196,7 +196,7 @@ var r=i(126),a=r.Buffer;function s(e,t){for(var i in e)t[i]=e[i]}function n(e,t,
196
196
  * pkg.js - package constants
197
197
  * Copyright (c) 2019-2022, Bookman Software (MIT License).
198
198
  * https://github.com/bookmansoft/gamegold
199
- */t.protocol="vallnet",t.version="v5.3.1",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
199
+ */t.protocol="vallnet",t.version="v5.3.2",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
200
200
  /*!
201
201
  * common.js - p2p constants for vallnet
202
202
  * Copyright (c) 2019-2022, Bookman Software (MIT License).
@@ -424,7 +424,7 @@ function r(e){let t=null;var i=r.list[e.contract.options.type];return i?new(t=i.
424
424
  *
425
425
  * @note 为了让打包程序正常工作,没有使用自动化方案来引入类文件
426
426
  */
427
- const r=i(5).ContractType;e.exports=function(e){if(!e)return i(188);switch(e.oper){case r.cpRegister:return i(191);case r.cpChange:return i(193);case r.coinbase:return i(194);case r.contractPromise:return i(195);case r.scRegister:return i(580);case r.scUpdate:return i(198);case r.scState:return i(199);case r.scRun:return i(200);case r.scNotify:return i(206);case r.propFound:return i(207);case r.vote:return i(208);case r.propSale:return i(209);case r.notify:return i(210);case r.contractCreate:return i(211);case r.contractExecute:return i(212);case r.erIssue:return i(213);case r.erAbolish:return i(214);case r.enchanceCp:return i(215);default:try{return i(581)("./"+e.oper)}catch(e){return i(14)}}}},function(e,t,i){var r=i(14);const a=i(19).nestingCodes,s=i(117);e.exports=class extends r{async insert(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashMem.has(t)||this.setOptIndex(e,i)&&(await s(e).insert(),e.env.middleHashMem.add(t))}}async erase(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashMem.delete(""+e.hash+t),this.setOptIndex(e,t)&&await s(e).erase()}async confirm(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashChain.has(t)||this.setOptIndex(e,i)&&(await s(e).confirm(),e.env.middleHashChain.add(t))}}async unconfirm(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashChain.delete(""+e.hash+t),this.setOptIndex(e,t)&&await s(e).unconfirm()}async verify(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++)if(this.setOptIndex(e,i)){var t=await s(e).verify();if(1!=t)return t}return!0}getOpt(){return{env:this.options.env,tx:this.options.tx,block:this.options.block,height:this.options.coinbaseHeight,hash:this.options.hash}}setOptIndex(e,t){return e.i=t,e.output=e.tx.outputs[t],e.type=e.output.getReturnType(),e.data=e.output.getReturnData(a),!!e.data}}},function(e,t,i){const{ContractEnvType:r,PropStatus:a}=i(5);var s=i(58);const n=i(7),o=i(148);e.exports=class extends s{async confirm(){var{env:e,i:t,output:i,data:s,hash:n,block:o,tx:c}=this.options,u=await e.propList.getVp(s.pid);!u||u.current.hash==n&&u.current.index==t?(s.current={hash:n,index:t,address:i.getAddress().toString()},s.height=0<e.curHeight?e.curHeight+1:0,s.pst=a.Ready,s.gold=i.value,await e.propList.setVp(s,c),e.mode==r.Block&&(i={pid:s.pid,oid:s.oid,cid:s.cid,dst:s.current.address,time:o.time,height:s.height},e.node.transmit("prop.create",i))):e.logger.warning("PropCreate.conflict",s.pid,", height: ",o?o.height:0,"mode: ",e.mode,n,t,u.current.hash,u.current.index)}async unconfirm(){var e,{env:t,i:i,data:e,hash:r}=this.options;(e=await t.propList.getVp(e.pid))&&e.current.hash==r&&e.current.index==i&&await t.propList.delVp(e)}async verify(){var{env:e,output:t,data:i}=this.options;if(!o.unittest){var r=e.cpList.getItem(i.cid);if(!r||r.current.address!=t.getAddress().toString())return"PropCreate.errorAddress"}return t.value<n.MINPROPVALUE?"PropCreate.MINPROPVALUE":!e.network.tokenReg.test(i.pid)||"PropCreate.invalidPid"}}},function(e,t,i){const r=i(0),a=i(19).opcodes,s=i(38).broadcast,n=i(132).vpItem;var o=i(58);const{ContractEnvType:c,PropStatus:u}=i(5);e.exports=class extends o{async confirm(){let{env:e,i:t,output:i,data:r,hash:o,tx:h,block:l}=this.options;if(e.mode==c.Wallet){var p=await e.propList.getVp(r.pid);if(p&&(p.current.hash!=r.prev.hash||p.current.index!=r.prev.index))return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);p=new n({pid:r.pid,cid:r.cid,oid:r.oid,gold:i.value,current:{hash:o,index:t,address:i.getAddress().toString()},height:0<e.curHeight?e.curHeight+1:0,pst:u.Ready,wid:0,account:""}),await e.propList.setVp(p,h),p={pid:p.pid,address:p.current.address,wid:p.wid,account:p.account,time:l.time,height:p.height,cid:p.cid},e.emit("prop/receive",p),s("prop/receive",p)}else{if(!(p=await e.propList.getVp(r.pid))||p.current.hash!=r.prev.hash||p.current.index!=r.prev.index)return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);var d,f=p.current.address,m=i.getAddress().toString();if(p.current={hash:o,index:t,address:m},p.height=0<e.curHeight?e.curHeight+1:0,p.pst=u.Ready,await e.propList.setVp(p,h),e.mode==c.Block){if(p.cid==e.network.genesisId){for(d of(await e.propList.getVpByAddress(f)).list){if(d.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(f)}e.voteMgr.addTokenAddress(m)}m={pid:p.pid,oid:p.oid,cid:p.cid,src:f,dst:m,time:l.time,height:p.height},e.node.transmit("prop.exchange",m)}}let g=0,v=r;for(;i&&i.getReturnType(a.OP_PROPEXCHANGE)&&g++<2e3;){var y=v.prev,b=(e.middleHashChain.add(y.hash+y.index.toString()),await e.finder(y.hash));if(!b)break;if(i=b.outputs[y.index],!(v=i.getReturnData())||!v.prev||e.middleHashChain.has(v.prev.hash+v.prev.index.toString()))break}}async unconfirm(){var{env:e,data:t}=this.options,i=await e.finder(t.prev.hash);if(i&&i.outputs[t.prev.index]&&(n=i.outputs[t.prev.index]).getReturnData([a.OP_PROPEXCHANGE,a.OP_PROPCREATE])){var r=await e.propList.getVp(t.pid);if(r){var s,n=n.getAddress().toString(),o=r.current.address;if(r.current.hash=t.prev.hash,r.current.index=t.prev.index,r.current.address=n,await e.propList.setVp(r,i),e.mode==c.Block&&r.cid==e.network.genesisId){for(s of(await e.propList.getVpByAddress(o)).list){if(s.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(o)}e.voteMgr.addTokenAddress(n)}}}}async verify(){var{env:e,tx:t,i:i,data:a}=this.options;return r.strictEqual(a.prev.hash,t.inputs[i].prevout.hash),r.strictEqual(a.prev.index,t.inputs[i].prevout.index),await e.propList.getVp(a.pid),!0}}},function(e,t,i){var r=i(14);const a=i(5).ContractEnvType,s=i(32).VerifyError;var{}=i(19);const n=i(192);e.exports=class extends r{async insert(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=-1,await e.cpMemList.addItem(r)}async erase(){var e=this.options.env,t=this.data;await e.cpMemList.delItem(t)}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=this.options.coinbaseHeight,r.status=1,await e.cpList.addItem(r),this.mode==a.Block&&await e.chain.node.mempool.cpMemList.delItem(r)}async unconfirm(){var e=this.options.env,t=this.data;this.options.tx,await e.cpList.delItem(t)}async verify(){var e=this.options.env,t=this.options.tx;if(!this.data)throw new s(t,"invalid","null cpRegister data",100);var i=n.verifyDataFormat(this.data);if(i)throw new s(t,"invalid",i,100);if((this.mode!=a.Block||"spv"!=e.node.nodeType)&&(i=this.mode!=a.Mempool,!await e.rpcExecute({method:"canExecute",params:[{confirm:i,cid:this.data.cid,name:this.data.name,oper:this.data.oper}]})))throw new s(t,"invalid info on "+this.data.oper,"cp.create",0);return!0}}},function(e,t,i){"use strict";
427
+ const r=i(5).ContractType;e.exports=function(e){if(!e)return i(188);switch(e.oper){case r.cpRegister:return i(191);case r.cpChange:return i(193);case r.coinbase:return i(194);case r.contractPromise:return i(195);case r.scRegister:return i(580);case r.scUpdate:return i(198);case r.scState:return i(199);case r.scRun:return i(200);case r.scNotify:return i(206);case r.propFound:return i(207);case r.vote:return i(208);case r.propSale:return i(209);case r.notify:return i(210);case r.contractCreate:return i(211);case r.contractExecute:return i(212);case r.erIssue:return i(213);case r.erAbolish:return i(214);case r.enchanceCp:return i(215);default:try{return i(581)("./"+e.oper)}catch(e){return i(14)}}}},function(e,t,i){var r=i(14);const a=i(19).nestingCodes,s=i(117);e.exports=class extends r{async insert(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashMem.has(t)||this.setOptIndex(e,i)&&(await s(e).insert(),e.env.middleHashMem.add(t))}}async erase(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashMem.delete(""+e.hash+t),this.setOptIndex(e,t)&&await s(e).erase()}async confirm(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashChain.has(t)||this.setOptIndex(e,i)&&(await s(e).confirm(),e.env.middleHashChain.add(t))}}async unconfirm(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashChain.delete(""+e.hash+t),this.setOptIndex(e,t)&&await s(e).unconfirm()}async verify(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++)if(this.setOptIndex(e,i)){var t=await s(e).verify();if(1!=t)return t}return!0}getOpt(){return{env:this.options.env,tx:this.options.tx,block:this.options.block,height:this.options.coinbaseHeight,hash:this.options.hash}}setOptIndex(e,t){return e.i=t,e.output=e.tx.outputs[t],e.type=e.output.getReturnType(),e.data=e.output.getReturnData(a),!!e.data}}},function(e,t,i){const{ContractEnvType:r,PropStatus:a}=i(5);var s=i(58);const n=i(7),o=i(148);e.exports=class extends s{async confirm(){var{env:e,i:t,output:i,data:s,hash:n,block:o,tx:c}=this.options,u=await e.propList.getVp(s.pid);!u||u.current.hash==n&&u.current.index==t?(s.current={hash:n,index:t,address:i.getAddress().toString()},s.height=0<e.curHeight?e.curHeight+1:0,s.pst=a.Ready,s.gold=i.value,await e.propList.setVp(s,c),e.mode==r.Block&&(i={pid:s.pid,oid:s.oid,cid:s.cid,dst:s.current.address,time:o.time,height:s.height},e.node.transmit("prop.create",i))):e.logger.warning("PropCreate.conflict",s.pid,", height: ",o?o.height:0,"mode: ",e.mode,n,t,u.current.hash,u.current.index)}async unconfirm(){var e,{env:t,i:i,data:e,hash:r}=this.options;(e=await t.propList.getVp(e.pid))&&e.current.hash==r&&e.current.index==i&&await t.propList.delVp(e)}async verify(){var{env:e,output:t,data:i}=this.options;if(!o.unittest){var r=e.cpList.getItem(i.cid);if(!r||r.current.address!=t.getAddress().toString())return"PropCreate.errorAddress"}return t.value<n.MINPROPVALUE?"PropCreate.MINPROPVALUE":!e.network.tokenReg.test(i.pid)||"PropCreate.invalidPid"}}},function(e,t,i){const r=i(0),a=i(19).opcodes,s=i(38).broadcast,n=i(132).vpItem;var o=i(58);const{ContractEnvType:c,PropStatus:u}=i(5);e.exports=class extends o{async confirm(){let{env:e,i:t,output:i,data:r,hash:o,tx:h,block:l}=this.options;if(e.mode==c.Wallet){var p=await e.propList.getVp(r.pid);if(p&&(p.current.hash!=r.prev.hash||p.current.index!=r.prev.index))return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);p=new n({pid:r.pid,cid:r.cid,oid:r.oid,gold:i.value,current:{hash:o,index:t,address:i.getAddress().toString()},height:0<e.curHeight?e.curHeight+1:0,pst:u.Ready,wid:0,account:""}),await e.propList.setVp(p,h),p={pid:p.pid,address:p.current.address,wid:p.wid,account:p.account,time:l.time,height:p.height,cid:p.cid},e.emit("prop/receive",p),s("prop/receive",p)}else{if(!(p=await e.propList.getVp(r.pid))||p.current.hash!=r.prev.hash||p.current.index!=r.prev.index)return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);var d,f=p.current.address,m=i.getAddress().toString();if(p.current={hash:o,index:t,address:m},p.height=0<e.curHeight?e.curHeight+1:0,p.pst=u.Ready,await e.propList.setVp(p,h),e.mode==c.Block){if(p.cid==e.network.genesisId){for(d of(await e.propList.getVpByAddress(f)).list){if(d.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(f)}e.voteMgr.addTokenAddress(m)}m={pid:p.pid,oid:p.oid,cid:p.cid,src:f,dst:m,time:l.time,height:p.height},e.node.transmit("prop.exchange",m)}}let g=0,v=r;for(;i&&i.getReturnType(a.OP_PROPEXCHANGE)&&g++<2e3;){var y=v.prev,b=(e.middleHashChain.add(y.hash+y.index.toString()),await e.finder(y.hash));if(!b)break;if(i=b.outputs[y.index],!(v=i.getReturnData())||!v.prev||e.middleHashChain.has(v.prev.hash+v.prev.index.toString()))break}}async unconfirm(){var{env:e,data:t}=this.options,i=await e.finder(t.prev.hash);if(i&&i.outputs[t.prev.index]&&(n=i.outputs[t.prev.index]).getReturnData([a.OP_PROPEXCHANGE,a.OP_PROPCREATE])){var r=await e.propList.getVp(t.pid);if(r){var s,n=n.getAddress().toString(),o=r.current.address;if(r.current.hash=t.prev.hash,r.current.index=t.prev.index,r.current.address=n,await e.propList.setVp(r,i),e.mode==c.Block&&r.cid==e.network.genesisId){for(s of(await e.propList.getVpByAddress(o)).list){if(s.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(o)}e.voteMgr.addTokenAddress(n)}}}}async verify(){var{env:e,tx:t,i:i,data:a}=this.options;return r.strictEqual(a.prev.hash,t.inputs[i].prevout.hash),r.strictEqual(a.prev.index,t.inputs[i].prevout.index),await e.propList.getVp(a.pid),!0}}},function(e,t,i){var r=i(14);const a=i(5).ContractEnvType,s=i(32).VerifyError;var{}=i(19);const n=i(192);e.exports=class extends r{async insert(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=-1,await e.cpMemList.addItem(r)}async erase(){var e=this.options.env,t=this.data;await e.cpMemList.delItem(t)}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=this.options.coinbaseHeight,r.status=1,await e.cpList.addItem(r),e.mode==a.Block&&(i={cid:r.cid,name:r.name,address:r.current.address},e.node.transmit("cp.create",i)),this.mode==a.Block&&await e.chain.node.mempool.cpMemList.delItem(r)}async unconfirm(){var e=this.options.env,t=this.data;this.options.tx,await e.cpList.delItem(t)}async verify(){var e=this.options.env,t=this.options.tx;if(!this.data)throw new s(t,"invalid","null cpRegister data",100);var i=n.verifyDataFormat(this.data);if(i)throw new s(t,"invalid",i,100);if((this.mode!=a.Block||"spv"!=e.node.nodeType)&&(i=this.mode!=a.Mempool,!await e.rpcExecute({method:"canExecute",params:[{confirm:i,cid:this.data.cid,name:this.data.name,oper:this.data.oper}]})))throw new s(t,"invalid info on "+this.data.oper,"cp.create",0);return!0}}},function(e,t,i){"use strict";
428
428
  /*!
429
429
  * cpHelper.js
430
430
  * 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{ContractEnvType:a,ContractState:s}=i(5),n=i(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError,o=i(7),c=i(152),u=i(50);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(80);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(80);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(80);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(80);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(80);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(38).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 s=i(5).PropStatus;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=s.Delete,await e.propList.setVp(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=s.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==s.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(32).VerifyError,h=i(7),l=i(38).broadcast,p=i(2);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(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?(Reflect.deleteProperty(a,"bid"),a.current={hash:this.options.hash,index:2,address:o},a.pst=c.Ready,await e.propList.setVp(a,t),this.mode==n.Wallet&&(t={pid:a.pid,address:a.current.address,wid:a.wid,account:a.account,time:p.now(),height:-1,cid:a.cid},e.emit("prop/auction",t),l("prop/auction",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);return!0}async erase(){var e,t=this.options.env,i=2<(r=this.options.tx).outputs.length?r.outputs[2].getReturnData():null,r=r.inputs[0],a=await t.propList.getVp(this.data.pid);a&&(i?(i=await t.getExtendTX(r.prevout.hash))&&(e=i.tx.outputs[r.prevout.index],a.current={hash:r.prevout.hash,index:r.prevout.index,address:e.getAddress().toString()},a.bid={hash:this.options.hash,value:a.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},a.pst=c.Sale,await t.propList.setVp(a,i.tx)):(Reflect.deleteProperty(a,"bid"),a.pst=c.Ready,await t.propList.setVp(a)))}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 Reflect.deleteProperty(a,"bid"),a.current={hash:i,index:2,address:r},a.height=this.options.coinbaseHeight,a.pst=c.Ready,await e.propList.setVp(a,t),this.mode==n.Wallet&&(i={pid:a.pid,address:a.current.address,wid:a.wid,account:a.account,time:this.options.block.time,height:a.height,cid:a.cid},e.emit("prop/auction",i),l("prop/auction",i)),!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?(e=(t=s.tx.outputs[a.index]).getReturnData(),(e=await i.propList.getVp(e.pid))&&(e.current={hash:a.hash,index:a.index,address:t.getAddress().toString()},e.height=s.height-1,await i.propList.setVp(e,r)),this.mode==n.Wallet&&(a={pid:e.pid,address:e.current.address,wid:e.wid,account:e.account,time:this.options.block.time,height:e.height,cid:e.cid},i.emit("prop/auction",a),l("prop/auction",a))):this.mode==n.Wallet&&(t=await i.propList.getVp(this.data.pid),await i.propList.delVp(t)),!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){if(s.period<t.curHeight)throw new u(i,"sale order expired","contract",0);if(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)throw new u(i,"sale order lack bid info","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 l=await t.getTX(s.bid.hash);l&&await t.removeDoubleSpenders(l)}else r(s.pst===c.Ready);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(38).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(32).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(39),c=i(6),u=i(13),h=i(38).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(39),u=i(38).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(226).EnchancementItem,o=i(39);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{ContractEnvType:a,ContractState:s}=i(5),n=i(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError,o=i(7),c=i(152),u=i(50);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(80);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(80);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(80);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(80);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(80);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(38).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(32).VerifyError,h=i(7),l=i(38).broadcast,p=i(2);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(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?(Reflect.deleteProperty(a,"bid"),a.current={hash:this.options.hash,index:2,address:o},a.pst=c.Ready,await e.propList.setVp(a,t),this.mode==n.Wallet&&(t={pid:a.pid,address:a.current.address,wid:a.wid,account:a.account,time:p.now(),height:-1,cid:a.cid},e.emit("prop/auction",t),l("prop/auction",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);return!0}async erase(){var e,t=this.options.env,i=2<(r=this.options.tx).outputs.length?r.outputs[2].getReturnData():null,r=r.inputs[0],a=await t.propList.getVp(this.data.pid);a&&(i?(i=await t.getExtendTX(r.prevout.hash))&&(e=i.tx.outputs[r.prevout.index],a.current={hash:r.prevout.hash,index:r.prevout.index,address:e.getAddress().toString()},a.bid={hash:this.options.hash,value:a.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},a.pst=c.Sale,await t.propList.setVp(a,i.tx)):(Reflect.deleteProperty(a,"bid"),a.pst=c.Ready,await t.propList.setVp(a)))}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 Reflect.deleteProperty(a,"bid"),a.current={hash:i,index:2,address:r},a.height=this.options.coinbaseHeight,a.pst=c.Ready,await e.propList.setVp(a,t),this.mode==n.Wallet&&(i={pid:a.pid,address:a.current.address,wid:a.wid,account:a.account,time:this.options.block.time,height:a.height,cid:a.cid},e.emit("prop/auction",i),l("prop/auction",i)),!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?(e=(t=s.tx.outputs[a.index]).getReturnData(),(e=await i.propList.getVp(e.pid))&&(e.current={hash:a.hash,index:a.index,address:t.getAddress().toString()},e.height=s.height-1,await i.propList.setVp(e,r)),this.mode==n.Wallet&&(a={pid:e.pid,address:e.current.address,wid:e.wid,account:e.account,time:this.options.block.time,height:e.height,cid:e.cid},i.emit("prop/auction",a),l("prop/auction",a))):this.mode==n.Wallet&&(t=await i.propList.getVp(this.data.pid),await i.propList.delVp(t)),!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){if(s.period<t.curHeight)throw new u(i,"sale order expired","contract",0);if(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)throw new u(i,"sale order lack bid info","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 l=await t.getTX(s.bid.hash);l&&await t.removeDoubleSpenders(l)}else r(s.pst===c.Ready);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(38).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(32).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(39),c=i(6),u=i(13),h=i(38).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(39),u=i(38).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(226).EnchancementItem,o=i(39);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
@@ -206,7 +206,7 @@ var r=i(126),s=r.Buffer;function n(e,t){for(var i in e)t[i]=e[i]}function a(e,t,
206
206
  * pkg.js - package constants
207
207
  * Copyright (c) 2019-2022, Bookman Software (MIT License).
208
208
  * https://github.com/bookmansoft/gamegold
209
- */t.protocol="vallnet",t.version="v5.3.1",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
209
+ */t.protocol="vallnet",t.version="v5.3.2",t.url="https://github.com/bookmansoft/gamegold"},function(e,t,i){"use strict";
210
210
  /*!
211
211
  * common.js - p2p constants for vallnet
212
212
  * Copyright (c) 2019-2022, Bookman Software (MIT License).
@@ -438,7 +438,7 @@ function r(e){let t=null;var i=r.list[e.contract.options.type];return i?new(t=i.
438
438
  *
439
439
  * @note 为了让打包程序正常工作,没有使用自动化方案来引入类文件
440
440
  */
441
- const r=i(5).ContractType;e.exports=function(e){if(!e)return i(188);switch(e.oper){case r.cpRegister:return i(191);case r.cpChange:return i(193);case r.coinbase:return i(194);case r.contractPromise:return i(195);case r.scRegister:return i(580);case r.scUpdate:return i(198);case r.scState:return i(199);case r.scRun:return i(200);case r.scNotify:return i(206);case r.propFound:return i(207);case r.vote:return i(208);case r.propSale:return i(209);case r.notify:return i(210);case r.contractCreate:return i(211);case r.contractExecute:return i(212);case r.erIssue:return i(213);case r.erAbolish:return i(214);case r.enchanceCp:return i(215);default:try{return i(581)("./"+e.oper)}catch(e){return i(14)}}}},function(e,t,i){var r=i(14);const s=i(19).nestingCodes,n=i(117);e.exports=class extends r{async insert(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashMem.has(t)||this.setOptIndex(e,i)&&(await n(e).insert(),e.env.middleHashMem.add(t))}}async erase(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashMem.delete(""+e.hash+t),this.setOptIndex(e,t)&&await n(e).erase()}async confirm(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashChain.has(t)||this.setOptIndex(e,i)&&(await n(e).confirm(),e.env.middleHashChain.add(t))}}async unconfirm(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashChain.delete(""+e.hash+t),this.setOptIndex(e,t)&&await n(e).unconfirm()}async verify(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++)if(this.setOptIndex(e,i)){var t=await n(e).verify();if(1!=t)return t}return!0}getOpt(){return{env:this.options.env,tx:this.options.tx,block:this.options.block,height:this.options.coinbaseHeight,hash:this.options.hash}}setOptIndex(e,t){return e.i=t,e.output=e.tx.outputs[t],e.type=e.output.getReturnType(),e.data=e.output.getReturnData(s),!!e.data}}},function(e,t,i){const{ContractEnvType:r,PropStatus:s}=i(5);var n=i(58);const a=i(7),o=i(148);e.exports=class extends n{async confirm(){var{env:e,i:t,output:i,data:n,hash:a,block:o,tx:c}=this.options,h=await e.propList.getVp(n.pid);!h||h.current.hash==a&&h.current.index==t?(n.current={hash:a,index:t,address:i.getAddress().toString()},n.height=0<e.curHeight?e.curHeight+1:0,n.pst=s.Ready,n.gold=i.value,await e.propList.setVp(n,c),e.mode==r.Block&&(i={pid:n.pid,oid:n.oid,cid:n.cid,dst:n.current.address,time:o.time,height:n.height},e.node.transmit("prop.create",i))):e.logger.warning("PropCreate.conflict",n.pid,", height: ",o?o.height:0,"mode: ",e.mode,a,t,h.current.hash,h.current.index)}async unconfirm(){var e,{env:t,i:i,data:e,hash:r}=this.options;(e=await t.propList.getVp(e.pid))&&e.current.hash==r&&e.current.index==i&&await t.propList.delVp(e)}async verify(){var{env:e,output:t,data:i}=this.options;if(!o.unittest){var r=e.cpList.getItem(i.cid);if(!r||r.current.address!=t.getAddress().toString())return"PropCreate.errorAddress"}return t.value<a.MINPROPVALUE?"PropCreate.MINPROPVALUE":!e.network.tokenReg.test(i.pid)||"PropCreate.invalidPid"}}},function(e,t,i){const r=i(0),s=i(19).opcodes,n=i(38).broadcast,a=i(132).vpItem;var o=i(58);const{ContractEnvType:c,PropStatus:h}=i(5);e.exports=class extends o{async confirm(){let{env:e,i:t,output:i,data:r,hash:o,tx:u,block:l}=this.options;if(e.mode==c.Wallet){var p=await e.propList.getVp(r.pid);if(p&&(p.current.hash!=r.prev.hash||p.current.index!=r.prev.index))return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);p=new a({pid:r.pid,cid:r.cid,oid:r.oid,gold:i.value,current:{hash:o,index:t,address:i.getAddress().toString()},height:0<e.curHeight?e.curHeight+1:0,pst:h.Ready,wid:0,account:""}),await e.propList.setVp(p,u),p={pid:p.pid,address:p.current.address,wid:p.wid,account:p.account,time:l.time,height:p.height,cid:p.cid},e.emit("prop/receive",p),n("prop/receive",p)}else{if(!(p=await e.propList.getVp(r.pid))||p.current.hash!=r.prev.hash||p.current.index!=r.prev.index)return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);var d,f=p.current.address,m=i.getAddress().toString();if(p.current={hash:o,index:t,address:m},p.height=0<e.curHeight?e.curHeight+1:0,p.pst=h.Ready,await e.propList.setVp(p,u),e.mode==c.Block){if(p.cid==e.network.genesisId){for(d of(await e.propList.getVpByAddress(f)).list){if(d.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(f)}e.voteMgr.addTokenAddress(m)}m={pid:p.pid,oid:p.oid,cid:p.cid,src:f,dst:m,time:l.time,height:p.height},e.node.transmit("prop.exchange",m)}}let g=0,y=r;for(;i&&i.getReturnType(s.OP_PROPEXCHANGE)&&g++<2e3;){var v=y.prev,b=(e.middleHashChain.add(v.hash+v.index.toString()),await e.finder(v.hash));if(!b)break;if(i=b.outputs[v.index],!(y=i.getReturnData())||!y.prev||e.middleHashChain.has(y.prev.hash+y.prev.index.toString()))break}}async unconfirm(){var{env:e,data:t}=this.options,i=await e.finder(t.prev.hash);if(i&&i.outputs[t.prev.index]&&(a=i.outputs[t.prev.index]).getReturnData([s.OP_PROPEXCHANGE,s.OP_PROPCREATE])){var r=await e.propList.getVp(t.pid);if(r){var n,a=a.getAddress().toString(),o=r.current.address;if(r.current.hash=t.prev.hash,r.current.index=t.prev.index,r.current.address=a,await e.propList.setVp(r,i),e.mode==c.Block&&r.cid==e.network.genesisId){for(n of(await e.propList.getVpByAddress(o)).list){if(n.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(o)}e.voteMgr.addTokenAddress(a)}}}}async verify(){var{env:e,tx:t,i:i,data:s}=this.options;return r.strictEqual(s.prev.hash,t.inputs[i].prevout.hash),r.strictEqual(s.prev.index,t.inputs[i].prevout.index),await e.propList.getVp(s.pid),!0}}},function(e,t,i){var r=i(14);const s=i(5).ContractEnvType,n=i(32).VerifyError;var{}=i(19);const a=i(192);e.exports=class extends r{async insert(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=-1,await e.cpMemList.addItem(r)}async erase(){var e=this.options.env,t=this.data;await e.cpMemList.delItem(t)}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=this.options.coinbaseHeight,r.status=1,await e.cpList.addItem(r),this.mode==s.Block&&await e.chain.node.mempool.cpMemList.delItem(r)}async unconfirm(){var e=this.options.env,t=this.data;this.options.tx,await e.cpList.delItem(t)}async verify(){var e=this.options.env,t=this.options.tx;if(!this.data)throw new n(t,"invalid","null cpRegister data",100);var i=a.verifyDataFormat(this.data);if(i)throw new n(t,"invalid",i,100);if((this.mode!=s.Block||"spv"!=e.node.nodeType)&&(i=this.mode!=s.Mempool,!await e.rpcExecute({method:"canExecute",params:[{confirm:i,cid:this.data.cid,name:this.data.name,oper:this.data.oper}]})))throw new n(t,"invalid info on "+this.data.oper,"cp.create",0);return!0}}},function(e,t,i){"use strict";
441
+ const r=i(5).ContractType;e.exports=function(e){if(!e)return i(188);switch(e.oper){case r.cpRegister:return i(191);case r.cpChange:return i(193);case r.coinbase:return i(194);case r.contractPromise:return i(195);case r.scRegister:return i(580);case r.scUpdate:return i(198);case r.scState:return i(199);case r.scRun:return i(200);case r.scNotify:return i(206);case r.propFound:return i(207);case r.vote:return i(208);case r.propSale:return i(209);case r.notify:return i(210);case r.contractCreate:return i(211);case r.contractExecute:return i(212);case r.erIssue:return i(213);case r.erAbolish:return i(214);case r.enchanceCp:return i(215);default:try{return i(581)("./"+e.oper)}catch(e){return i(14)}}}},function(e,t,i){var r=i(14);const s=i(19).nestingCodes,n=i(117);e.exports=class extends r{async insert(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashMem.has(t)||this.setOptIndex(e,i)&&(await n(e).insert(),e.env.middleHashMem.add(t))}}async erase(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashMem.delete(""+e.hash+t),this.setOptIndex(e,t)&&await n(e).erase()}async confirm(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++){var t=""+e.hash+i;e.env.middleHashChain.has(t)||this.setOptIndex(e,i)&&(await n(e).confirm(),e.env.middleHashChain.add(t))}}async unconfirm(){var e=this.getOpt();for(let t=0;t<e.tx.outputs.length;t++)e.env.middleHashChain.delete(""+e.hash+t),this.setOptIndex(e,t)&&await n(e).unconfirm()}async verify(){var e=this.getOpt();for(let i=0;i<e.tx.outputs.length;i++)if(this.setOptIndex(e,i)){var t=await n(e).verify();if(1!=t)return t}return!0}getOpt(){return{env:this.options.env,tx:this.options.tx,block:this.options.block,height:this.options.coinbaseHeight,hash:this.options.hash}}setOptIndex(e,t){return e.i=t,e.output=e.tx.outputs[t],e.type=e.output.getReturnType(),e.data=e.output.getReturnData(s),!!e.data}}},function(e,t,i){const{ContractEnvType:r,PropStatus:s}=i(5);var n=i(58);const a=i(7),o=i(148);e.exports=class extends n{async confirm(){var{env:e,i:t,output:i,data:n,hash:a,block:o,tx:c}=this.options,h=await e.propList.getVp(n.pid);!h||h.current.hash==a&&h.current.index==t?(n.current={hash:a,index:t,address:i.getAddress().toString()},n.height=0<e.curHeight?e.curHeight+1:0,n.pst=s.Ready,n.gold=i.value,await e.propList.setVp(n,c),e.mode==r.Block&&(i={pid:n.pid,oid:n.oid,cid:n.cid,dst:n.current.address,time:o.time,height:n.height},e.node.transmit("prop.create",i))):e.logger.warning("PropCreate.conflict",n.pid,", height: ",o?o.height:0,"mode: ",e.mode,a,t,h.current.hash,h.current.index)}async unconfirm(){var e,{env:t,i:i,data:e,hash:r}=this.options;(e=await t.propList.getVp(e.pid))&&e.current.hash==r&&e.current.index==i&&await t.propList.delVp(e)}async verify(){var{env:e,output:t,data:i}=this.options;if(!o.unittest){var r=e.cpList.getItem(i.cid);if(!r||r.current.address!=t.getAddress().toString())return"PropCreate.errorAddress"}return t.value<a.MINPROPVALUE?"PropCreate.MINPROPVALUE":!e.network.tokenReg.test(i.pid)||"PropCreate.invalidPid"}}},function(e,t,i){const r=i(0),s=i(19).opcodes,n=i(38).broadcast,a=i(132).vpItem;var o=i(58);const{ContractEnvType:c,PropStatus:h}=i(5);e.exports=class extends o{async confirm(){let{env:e,i:t,output:i,data:r,hash:o,tx:u,block:l}=this.options;if(e.mode==c.Wallet){var p=await e.propList.getVp(r.pid);if(p&&(p.current.hash!=r.prev.hash||p.current.index!=r.prev.index))return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);p=new a({pid:r.pid,cid:r.cid,oid:r.oid,gold:i.value,current:{hash:o,index:t,address:i.getAddress().toString()},height:0<e.curHeight?e.curHeight+1:0,pst:h.Ready,wid:0,account:""}),await e.propList.setVp(p,u),p={pid:p.pid,address:p.current.address,wid:p.wid,account:p.account,time:l.time,height:p.height,cid:p.cid},e.emit("prop/receive",p),n("prop/receive",p)}else{if(!(p=await e.propList.getVp(r.pid))||p.current.hash!=r.prev.hash||p.current.index!=r.prev.index)return void e.logger.warning("PropExchange.conflict",r.pid,", height: ",l?l.height:0,"mode: ",e.mode,"sim: ",o,t,"ori: ",p.current.hash,p.current.index);var d,f=p.current.address,m=i.getAddress().toString();if(p.current={hash:o,index:t,address:m},p.height=0<e.curHeight?e.curHeight+1:0,p.pst=h.Ready,await e.propList.setVp(p,u),e.mode==c.Block){if(p.cid==e.network.genesisId){for(d of(await e.propList.getVpByAddress(f)).list){if(d.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(f)}e.voteMgr.addTokenAddress(m)}m={pid:p.pid,oid:p.oid,cid:p.cid,src:f,dst:m,time:l.time,height:p.height},e.node.transmit("prop.exchange",m)}}let g=0,y=r;for(;i&&i.getReturnType(s.OP_PROPEXCHANGE)&&g++<2e3;){var v=y.prev,b=(e.middleHashChain.add(v.hash+v.index.toString()),await e.finder(v.hash));if(!b)break;if(i=b.outputs[v.index],!(y=i.getReturnData())||!y.prev||e.middleHashChain.has(y.prev.hash+y.prev.index.toString()))break}}async unconfirm(){var{env:e,data:t}=this.options,i=await e.finder(t.prev.hash);if(i&&i.outputs[t.prev.index]&&(a=i.outputs[t.prev.index]).getReturnData([s.OP_PROPEXCHANGE,s.OP_PROPCREATE])){var r=await e.propList.getVp(t.pid);if(r){var n,a=a.getAddress().toString(),o=r.current.address;if(r.current.hash=t.prev.hash,r.current.index=t.prev.index,r.current.address=a,await e.propList.setVp(r,i),e.mode==c.Block&&r.cid==e.network.genesisId){for(n of(await e.propList.getVpByAddress(o)).list){if(n.cid==e.network.genesisId)break;e.voteMgr.delTokenAddress(o)}e.voteMgr.addTokenAddress(a)}}}}async verify(){var{env:e,tx:t,i:i,data:s}=this.options;return r.strictEqual(s.prev.hash,t.inputs[i].prevout.hash),r.strictEqual(s.prev.index,t.inputs[i].prevout.index),await e.propList.getVp(s.pid),!0}}},function(e,t,i){var r=i(14);const s=i(5).ContractEnvType,n=i(32).VerifyError;var{}=i(19);const a=i(192);e.exports=class extends r{async insert(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=-1,await e.cpMemList.addItem(r)}async erase(){var e=this.options.env,t=this.data;await e.cpMemList.delItem(t)}async confirm(){var e=this.options.env,t=this.options.tx,i=t.hash("hex"),r=this.data;r.current={hash:i,index:0,address:t.outputs[0].getAddress().toString()},r.height=this.options.coinbaseHeight,r.status=1,await e.cpList.addItem(r),e.mode==s.Block&&(i={cid:r.cid,name:r.name,address:r.current.address},e.node.transmit("cp.create",i)),this.mode==s.Block&&await e.chain.node.mempool.cpMemList.delItem(r)}async unconfirm(){var e=this.options.env,t=this.data;this.options.tx,await e.cpList.delItem(t)}async verify(){var e=this.options.env,t=this.options.tx;if(!this.data)throw new n(t,"invalid","null cpRegister data",100);var i=a.verifyDataFormat(this.data);if(i)throw new n(t,"invalid",i,100);if((this.mode!=s.Block||"spv"!=e.node.nodeType)&&(i=this.mode!=s.Mempool,!await e.rpcExecute({method:"canExecute",params:[{confirm:i,cid:this.data.cid,name:this.data.name,oper:this.data.oper}]})))throw new n(t,"invalid info on "+this.data.oper,"cp.create",0);return!0}}},function(e,t,i){"use strict";
442
442
  /*!
443
443
  * cpHelper.js
444
444
  * 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{ContractEnvType:s,ContractState:n}=i(5),a=i(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError,o=i(7),c=i(152),h=i(50);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(80);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(80);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(80);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(80);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(80);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(38).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 n=i(5).PropStatus;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=n.Delete,await e.propList.setVp(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: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(32).VerifyError,u=i(7),l=i(38).broadcast,p=i(2);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(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?(Reflect.deleteProperty(s,"bid"),s.current={hash:this.options.hash,index:2,address:o},s.pst=c.Ready,await e.propList.setVp(s,t),this.mode==a.Wallet&&(t={pid:s.pid,address:s.current.address,wid:s.wid,account:s.account,time:p.now(),height:-1,cid:s.cid},e.emit("prop/auction",t),l("prop/auction",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);return!0}async erase(){var e,t=this.options.env,i=2<(r=this.options.tx).outputs.length?r.outputs[2].getReturnData():null,r=r.inputs[0],s=await t.propList.getVp(this.data.pid);s&&(i?(i=await t.getExtendTX(r.prevout.hash))&&(e=i.tx.outputs[r.prevout.index],s.current={hash:r.prevout.hash,index:r.prevout.index,address:e.getAddress().toString()},s.bid={hash:this.options.hash,value:s.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},s.pst=c.Sale,await t.propList.setVp(s,i.tx)):(Reflect.deleteProperty(s,"bid"),s.pst=c.Ready,await t.propList.setVp(s)))}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 Reflect.deleteProperty(s,"bid"),s.current={hash:i,index:2,address:r},s.height=this.options.coinbaseHeight,s.pst=c.Ready,await e.propList.setVp(s,t),this.mode==a.Wallet&&(i={pid:s.pid,address:s.current.address,wid:s.wid,account:s.account,time:this.options.block.time,height:s.height,cid:s.cid},e.emit("prop/auction",i),l("prop/auction",i)),!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?(e=(t=n.tx.outputs[s.index]).getReturnData(),(e=await i.propList.getVp(e.pid))&&(e.current={hash:s.hash,index:s.index,address:t.getAddress().toString()},e.height=n.height-1,await i.propList.setVp(e,r)),this.mode==a.Wallet&&(s={pid:e.pid,address:e.current.address,wid:e.wid,account:e.account,time:this.options.block.time,height:e.height,cid:e.cid},i.emit("prop/auction",s),l("prop/auction",s))):this.mode==a.Wallet&&(t=await i.propList.getVp(this.data.pid),await i.propList.delVp(t)),!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){if(n.period<t.curHeight)throw new h(i,"sale order expired","contract",0);if(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)throw new h(i,"sale order lack bid info","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 l=await t.getTX(n.bid.hash);l&&await t.removeDoubleSpenders(l)}else r(n.pst===c.Ready);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(38).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(32).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(39),c=i(6),h=i(13),u=i(38).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(39),h=i(38).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(226).EnchancementItem,o=i(39);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{ContractEnvType:s,ContractState:n}=i(5),a=i(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError;var{}=i(118);const o=i(62).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(32).VerifyError,o=i(7),c=i(152),h=i(50);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(80);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(80);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(80);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(80);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(80);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(38).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(32).VerifyError,u=i(7),l=i(38).broadcast,p=i(2);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(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?(Reflect.deleteProperty(s,"bid"),s.current={hash:this.options.hash,index:2,address:o},s.pst=c.Ready,await e.propList.setVp(s,t),this.mode==a.Wallet&&(t={pid:s.pid,address:s.current.address,wid:s.wid,account:s.account,time:p.now(),height:-1,cid:s.cid},e.emit("prop/auction",t),l("prop/auction",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);return!0}async erase(){var e,t=this.options.env,i=2<(r=this.options.tx).outputs.length?r.outputs[2].getReturnData():null,r=r.inputs[0],s=await t.propList.getVp(this.data.pid);s&&(i?(i=await t.getExtendTX(r.prevout.hash))&&(e=i.tx.outputs[r.prevout.index],s.current={hash:r.prevout.hash,index:r.prevout.index,address:e.getAddress().toString()},s.bid={hash:this.options.hash,value:s.gold,address:"",raw:this.options.raw,fixed:this.data.fixed,period:this.data.period},s.pst=c.Sale,await t.propList.setVp(s,i.tx)):(Reflect.deleteProperty(s,"bid"),s.pst=c.Ready,await t.propList.setVp(s)))}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 Reflect.deleteProperty(s,"bid"),s.current={hash:i,index:2,address:r},s.height=this.options.coinbaseHeight,s.pst=c.Ready,await e.propList.setVp(s,t),this.mode==a.Wallet&&(i={pid:s.pid,address:s.current.address,wid:s.wid,account:s.account,time:this.options.block.time,height:s.height,cid:s.cid},e.emit("prop/auction",i),l("prop/auction",i)),!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?(e=(t=n.tx.outputs[s.index]).getReturnData(),(e=await i.propList.getVp(e.pid))&&(e.current={hash:s.hash,index:s.index,address:t.getAddress().toString()},e.height=n.height-1,await i.propList.setVp(e,r)),this.mode==a.Wallet&&(s={pid:e.pid,address:e.current.address,wid:e.wid,account:e.account,time:this.options.block.time,height:e.height,cid:e.cid},i.emit("prop/auction",s),l("prop/auction",s))):this.mode==a.Wallet&&(t=await i.propList.getVp(this.data.pid),await i.propList.delVp(t)),!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){if(n.period<t.curHeight)throw new h(i,"sale order expired","contract",0);if(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)throw new h(i,"sale order lack bid info","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 l=await t.getTX(n.bid.hash);l&&await t.removeDoubleSpenders(l)}else r(n.pst===c.Ready);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(38).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(32).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(39),c=i(6),h=i(13),u=i(38).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(39),h=i(38).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(226).EnchancementItem,o=i(39);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.3.1",
3
+ "version": "5.3.2",
4
4
  "description": "Vallnet Core",
5
5
  "license": "MIT",
6
6
  "repository": "git://github.com/bookmansoft/gamegold",