Commit 12dccb29 authored by madengji's avatar madengji Committed by vipwzw

add miner custom

parent 2983a997
......@@ -94,8 +94,13 @@ coinDevFund=12
coinBaseReward=3
#委托账户最少解绑定时间(按小时)
unBindTime=24
#支持挖矿奖励的1e8小数模式,比如18coin 需要配置成1800000000 以支持小数位后的配置
#decimalMode=true
#支持挖矿奖励的1e8小数模式,比如18coin 需要配置成1800000000 以支持小数位后的配置,如果true,意味着已经打开即coinReward=1800000000
decimalMode=false
#挖矿模式, 0:普通挖矿,1:减半挖矿,2:自定义
minerMode=2
#挖矿减半周期,按高度减半
halvePeriod=1000
[consensus.sub.para]
#主链节点的grpc服务器ip,当前可以支持多ip负载均衡,如“118.31.177.1:8802,39.97.2.127:8802”
......@@ -261,6 +266,8 @@ ForkLoopCheckCommitTxDone=0
#仅平行链适用,自共识分阶段开启,缺省是0,若对应主链高度7200000之前开启过自共识,需要重新配置此分叉,并为之前自共识设置selfConsensEnablePreContract配置项
ForkParaSelfConsStages=0
ForkParaAssetTransferRbk=0
#仅平行链适用,开启挖矿交易的高度,已有代码版本可能未在0高度开启挖矿,需要设置这个高度,新版本默认从0开启挖矿,通过交易配置分阶段奖励
ForkParaFullMinerHeight=0
[fork.sub.evm]
Enable=0
......
......@@ -11,7 +11,7 @@ require (
github.com/NebulousLabs/merkletree v0.0.0-20181203152040-08d5d54b07f5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bitly/go-simplejson v0.5.0
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869
github.com/btcsuite/btcd v0.20.1-beta
github.com/coreos/etcd v3.3.15+incompatible
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f // indirect
......
......@@ -30,15 +30,19 @@ github.com/NebulousLabs/merkletree v0.0.0-20181203152040-08d5d54b07f5/go.mod h1:
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/VictoriaMetrics/fastcache v1.5.3 h1:2odJnXLbFZcoV9KYtQ+7TH1UOq3dn3AssMgieaezkR4=
github.com/VictoriaMetrics/fastcache v1.5.3/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE=
github.com/XiaoMi/pegasus-go-client v0.0.0-20181029071519-9400942c5d1c h1:3fAhdHMhoSG57DjJ/dqLFfgD+FoooPbQH6szINbrr3k=
github.com/XiaoMi/pegasus-go-client v0.0.0-20181029071519-9400942c5d1c/go.mod h1:KcL6D/4RZ8RAYzQ5gKI0odcdWUmCVlbQTOlWrhP71CY=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/apache/thrift v0.0.0-20171203172758-327ebb6c2b6d h1:b/FqDLjWXDQI6XBYvWDVgEKv3xOTs68qRkuqyU37lBc=
github.com/apache/thrift v0.0.0-20171203172758-327ebb6c2b6d/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847 h1:rtI0fD4oG/8eVokGVPYJEW1F88p1ZNgXiEIs9thEE4A=
github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/benbjohnson/clock v1.0.2 h1:Z0CN0Yb4ig9sGPXkvAQcGJfnrrMQ5QYLCMPRi9iD7YE=
......@@ -48,6 +52,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ=
github.com/btcsuite/btcd v0.0.0-20190109040709-5bda5314ca95/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0=
......@@ -56,13 +61,17 @@ github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcug
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw=
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo=
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d h1:yJzD/yFppdVCf6ApMkVy8cUxV0XrxdP9rVf6D87/Mng=
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw=
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc=
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8=
......@@ -71,6 +80,7 @@ github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM=
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U=
......@@ -90,9 +100,11 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018 h1:6xT9KW8zLC5IlbaIF5Q7JNieBoACT7iW0YTxQHR0in0=
github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4=
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0=
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
github.com/decred/base58 v1.0.2 h1:yupIH6bg+q7KYfBk7oUv3xFjKGb5Ypm4+v/61X4keGY=
github.com/decred/base58 v1.0.2/go.mod h1:pXP9cXCfM2sFLb2viz2FNIdeMWmZDBKG3ZBYbiSM78E=
......@@ -115,7 +127,9 @@ github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw=
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa h1:XKAhUk/dtp+CV0VO6mhG2V7jA9vbcGcnYF/Ay9NjZrY=
github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
......@@ -128,6 +142,7 @@ github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI=
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww=
github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
github.com/go-interpreter/wagon v0.6.0 h1:BBxDxjiJiHgw9EdkYXAWs8NHhwnazZ5P2EWBW5hFNWw=
......@@ -144,6 +159,7 @@ github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 h1:zN2lZNZRflqFyxVaTIU61KNKQ9C0055u9CAfpmqUvo4=
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3/go.mod h1:nPpo7qLxd6XL3hWJG/O60sR8ZKfMCiIoNap5GvD12KU=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
......@@ -256,6 +272,7 @@ github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlT
github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0=
github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356 h1:I/yrLt2WilKxlQKCM52clh5rGzTKpVctGT1lH4Dc8Jw=
github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU=
github.com/kevinms/leakybucket-go v0.0.0-20200115003610-082473db97ca h1:qNtd6alRqd3qOdPrKXMZImV192ngQ0WSh1briEO33Tk=
github.com/kevinms/leakybucket-go v0.0.0-20200115003610-082473db97ca/go.mod h1:ph+C5vpnCcQvKBwJwKLTK3JLNGnBXYlG7m7JjoC/zYA=
......@@ -263,15 +280,19 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
github.com/klauspost/compress v1.8.2 h1:Bx0qjetmNjdFXASH02NSAREKpiaDwkO1DRZ3dV2KCcs=
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/cpuid v1.2.1 h1:vJi+O/nMdFt0vqm8NZBI6wzALWdA2X+egi0ogNyrC/w=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ=
github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ=
......@@ -436,6 +457,7 @@ github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXT
github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
......@@ -443,6 +465,7 @@ github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyex
github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.30 h1:Qww6FseFn8PRfw07jueqIXqodm0JKiiKuK0DeXSqfyo=
github.com/miekg/dns v1.1.30/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
github.com/miguelmota/go-solidity-sha3 v0.1.0 h1:RoRqUD/qKqZCZIoAGVJhX6gEHeD6333uQv+jhBGpRDk=
github.com/miguelmota/go-solidity-sha3 v0.1.0/go.mod h1:FuaBKCJUkJcmPqCuKvPFYfzK1auYGr5+8i2evSBIm/Q=
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g=
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
......@@ -516,6 +539,7 @@ github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c h1:1RHs3tNxjXGHeul8z2t6H2N2TlAqpKe5yryJztRx4Jk=
github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
......@@ -530,6 +554,7 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34=
github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/perlin-network/life v0.0.0-20191203030451-05c0e0f7eaea h1:okKoivlkNRRLqXraEtatHfEhW+D71QTwkaj+4n4M2Xc=
......@@ -541,6 +566,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740=
......@@ -556,9 +582,11 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150 h1:ZeU+auZj1iNzN8iVhff6M38Mfu73FQiJve/GEXYJBjE=
github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563 h1:dY6ETXrvDG7Sa4vE8ZQG4yqWg6UnOcbqTAahkV813vQ=
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rjeczalik/notify v0.9.1 h1:CLCKso/QK1snAlnhNR/CNvNiFU2saUtjV0bx3EwNeCE=
github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho=
github.com/robertkrimen/otto v0.0.0-20170205013659-6a77b7cbc37d/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY=
github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d h1:1VUlQbCfkoSGv7qP7Y+ro3ap1P1pPZxgdGVqiTVy5C4=
......@@ -571,6 +599,7 @@ github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubr
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY=
github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0=
......@@ -588,15 +617,20 @@ github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc=
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 h1:Gb2Tyox57NRNuZ2d3rmvB3pcmbu7O1RS3m8WRx7ilrg=
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q=
github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570 h1:gIlAHnH1vJb5vwEjIp5kBj/eu99p/bl0Ay2goiPe5xE=
github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw=
github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3 h1:njlZPzLwU639dk2kqnCPPv+wNjq7Xb6EfUxe/oX0/NM=
github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d h1:gZZadD8H+fF+n9CmNhYL1Y0dJB+kLOmKd7FbPJLeGHs=
......@@ -605,11 +639,14 @@ github.com/tjfoc/gmsm v1.3.1/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn
github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM=
github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
github.com/twitchyliquid64/golang-asm v0.0.0-20190126203739-365674df15fc/go.mod h1:NoCfSFWosfqMqmmD7hApkirIK9ozpHjxRnRxs1l413A=
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef h1:wHSqTBrZW24CsNJDfeh9Ex6Pm0Rcpc7qrgKBiL44vF4=
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.5.0 h1:dhq+O9pmNZFF6qAXpasMO1xSm7dL4qEz2ylfZN8BG9w=
github.com/valyala/fasthttp v1.5.0/go.mod h1:eriCz9OhZjKCGfJ185a/IDgNl0bg9IbzfpcslMZXU1c=
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
......@@ -625,6 +662,7 @@ github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 h1:
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI=
github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee h1:lYbXeSvJi5zk5GLKVuid9TVjS9a0OmLIDKTfoZBL6Ow=
github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg=
github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208 h1:1cngl9mPEoITZG8s8cVcUy5CeIBYhEESkOB7m6Gmkrk=
github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees=
github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
......@@ -771,6 +809,7 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0 h1:bO/TA4OxCOummhSf10siHuG7vJOiwh7SpRpFZDkOgl4=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
......@@ -793,6 +832,7 @@ gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHO
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
......
......@@ -490,6 +490,10 @@ func (client *commitMsgClient) getTxsGroup(txsArr *types.Transactions) (*types.T
func (client *commitMsgClient) getExecName(commitHeight int64) string {
cfg := client.paraClient.GetAPI().GetConfig()
if cfg.IsDappFork(commitHeight, pt.ParaX, pt.ForkParaFullMinerHeight) {
return paracross.GetExecName(cfg)
}
if cfg.IsDappFork(commitHeight, pt.ParaX, pt.ForkParaSelfConsStages) {
return paracross.GetExecName(cfg)
}
......
......@@ -1254,71 +1254,6 @@ func (a *action) CrossAssetTransfer(transfer *pt.CrossAssetTransfer) (*types.Rec
return receipt, nil
}
//当前miner tx不需要校验上一个区块的衔接性,因为tx就是本节点发出,高度,preHash等都在本区块里面的blockchain做了校验
func (a *action) Miner(miner *pt.ParacrossMinerAction) (*types.Receipt, error) {
cfg := a.api.GetConfig()
if miner.Status.Title != cfg.GetTitle() || miner.Status.MainBlockHash == nil {
return nil, pt.ErrParaMinerExecErr
}
var logs []*types.ReceiptLog
var receipt = &pt.ReceiptParacrossMiner{}
log := &types.ReceiptLog{}
log.Ty = pt.TyLogParacrossMiner
receipt.Status = miner.Status
log.Log = types.Encode(receipt)
logs = append(logs, log)
minerReceipt := &types.Receipt{Ty: types.ExecOk, KV: nil, Logs: logs}
//自共识分阶段使能,综合考虑挖矿奖励和共识分配奖励,判断是否自共识使能需要采用共识的高度,而不能采用当前区块高度a.height
//考虑自共识使能区块高度100,如果采用区块高度判断,则在100高度可能收到80~99的20条共识交易,这20条交易在100高度参与共识,则无奖励可分配,而且共识高度将是80而不是100
//采用共识高度miner.Status.Height判断,则严格执行了产生奖励和分配奖励,且共识高度从100开始
isSelfConsensOn := miner.IsSelfConsensus
if cfg.IsDappFork(a.height, pt.ParaX, pt.ForkParaSelfConsStages) {
var err error
isSelfConsensOn, err = isSelfConsOn(a.db, miner.Status.Height)
if err != nil && errors.Cause(err) != pt.ErrKeyNotExist {
clog.Error("paracross miner getConsensus ", "height", miner.Status.Height, "err", err)
return nil, err
}
}
//自共识后才挖矿
if isSelfConsensOn {
//增发coins到paracross合约中,只处理发放,不做分配
totalReward := int64(0)
coinReward := cfg.MGInt("mver.consensus.paracross.coinReward", a.height)
fundReward := cfg.MGInt("mver.consensus.paracross.coinDevFund", a.height)
if coinReward > 0 {
totalReward += coinReward
}
if fundReward > 0 {
totalReward += fundReward
}
decimalMode := cfg.MIsEnable("mver.consensus.paracross.decimalMode", a.height)
if !decimalMode {
totalReward *= types.Coin
}
if totalReward > 0 {
issueReceipt, err := a.coinsAccount.ExecIssueCoins(a.execaddr, totalReward)
if err != nil {
clog.Error("paracross miner issue err", "height", miner.Status.Height,
"execAddr", a.execaddr, "amount", totalReward)
return nil, err
}
minerReceipt = mergeReceipt(minerReceipt, issueReceipt)
}
}
return minerReceipt, nil
}
func getTitleFrom(exec []byte) ([]byte, error) {
last := bytes.LastIndex(exec, []byte("."))
if last == -1 {
......
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package executor
import (
"github.com/33cn/chain33/types"
pt "github.com/33cn/plugin/plugin/dapp/paracross/types"
"github.com/pkg/errors"
)
//当前miner tx不需要校验上一个区块的衔接性,因为tx就是本节点发出,高度,preHash等都在本区块里面的blockchain做了校验
//note: 平行链的Miner从Height=1开始, 创世区块不挖矿
func (a *action) Miner(miner *pt.ParacrossMinerAction) (*types.Receipt, error) {
cfg := a.api.GetConfig()
if miner.Status.Title != cfg.GetTitle() || miner.Status.MainBlockHash == nil {
return nil, pt.ErrParaMinerExecErr
}
var logs []*types.ReceiptLog
var receipt = &pt.ReceiptParacrossMiner{}
log := &types.ReceiptLog{}
log.Ty = pt.TyLogParacrossMiner
receipt.Status = miner.Status
log.Log = types.Encode(receipt)
logs = append(logs, log)
minerReceipt := &types.Receipt{Ty: types.ExecOk, KV: nil, Logs: logs}
on, err := a.isSelfConsensOn(miner)
if err != nil {
return nil, err
}
//自共识后才挖矿
if on {
r, err := a.issueCoins(miner)
if err != nil {
return nil, err
}
minerReceipt = mergeReceipt(minerReceipt, r)
}
return minerReceipt, nil
}
func (a *action) isSelfConsensOn(miner *pt.ParacrossMinerAction) (bool, error) {
cfg := a.api.GetConfig()
//ForkParaInitMinerHeight高度后,默认全部挖矿,产生在paracross执行器地址,如果自共识分阶段,也只是分阶段奖励,挖矿一直产生
if cfg.IsDappFork(a.height, pt.ParaX, pt.ForkParaFullMinerHeight) {
return true, nil
}
isSelfConsensOn := miner.IsSelfConsensus
//自共识分阶段使能,综合考虑挖矿奖励和共识分配奖励,判断是否自共识使能需要采用共识的高度,而不能采用当前区块高度a.height
//考虑自共识使能区块高度100,如果采用区块高度判断,则在100高度可能收到80~99的20条共识交易,这20条交易在100高度参与共识,则无奖励可分配,而且共识高度将是80而不是100
//采用共识高度miner.Status.Height判断,则严格执行了产生奖励和分配奖励,且共识高度从100开始
if cfg.IsDappFork(a.height, pt.ParaX, pt.ForkParaSelfConsStages) {
var err error
isSelfConsensOn, err = isSelfConsOn(a.db, miner.Status.Height)
if err != nil && errors.Cause(err) != pt.ErrKeyNotExist {
clog.Error("paracross miner getConsensus ", "height", miner.Status.Height, "err", err)
return false, err
}
}
return isSelfConsensOn, nil
}
const (
normalMiner = iota
halveMiner
customMiner
)
type rewardValFn func(cfg *types.Chain33Config, height int64) (int64, int64, int64)
var getConfigRewards = make(map[int]rewardValFn)
func init() {
getConfigRewards[normalMiner] = getNormalReward
}
func (a *action) issueCoins(miner *pt.ParacrossMinerAction) (*types.Receipt, error) {
cfg := a.api.GetConfig()
mode := int(cfg.MGInt("mver.consensus.paracross.minerMode", a.height))
if getConfigRewards[mode] == nil {
panic("getTotalReward not be set depend on consensus.paracross.minerMode")
}
coinReward, coinFundReward, _ := getConfigRewards[mode](cfg, a.height)
totalReward := coinReward + coinFundReward
if totalReward > 0 {
issueReceipt, err := a.coinsAccount.ExecIssueCoins(a.execaddr, totalReward)
if err != nil {
clog.Error("paracross miner issue err", "height", miner.Status.Height,
"execAddr", a.execaddr, "amount", totalReward)
return nil, err
}
return issueReceipt, nil
}
return nil, nil
}
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package executor
import (
"fmt"
"github.com/33cn/chain33/types"
pt "github.com/33cn/plugin/plugin/dapp/paracross/types"
"math"
"strconv"
"strings"
)
const (
startN uint32 = 11
minerUnit int64 = 10000
//addr:quota的配置
// 18.75/100份额,由于浮点数的原因,都扩大100倍即1875/10000
addrStaffA = "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4:1875" //18.75quota 1875/10000
addrStaffB = "1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR:1875" //18.75 quota
addrBoss = "1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k:6250" //62.50 quota
)
var addrs = []string{addrStaffA, addrStaffB, addrBoss}
var addrsMap = make(map[string]int64)
func checkQuota() {
var sum int64
for _, a := range addrs {
val := strings.Split(a, ":")
v, err := strconv.Atoi(val[1])
if err != nil || v == 0 {
panic(fmt.Sprintf("minerCustom checkQuota err=%s,addr=%s", err, a))
}
addrsMap[val[0]] = int64(v)
sum += int64(v)
}
if sum > minerUnit {
panic(fmt.Sprintf("minerCustom checkQuota sum=%d beyond %d", sum, minerUnit))
}
}
func init() {
getConfigRewards[customMiner] = getCustomReward
rewardMiner[customMiner] = customRewardMiner
checkQuota()
}
func getCustomReward(cfg *types.Chain33Config, height int64) (int64, int64, int64) {
n := getCurrentN(height)
return calcCoins(n), 0, 0
}
func getNHeight(n uint32) int64 {
v := 1 << n
return 4096 * (int64(v) - 1)
}
//高度 4096*(2^n -1)+1 开始减半, n=1:1~4096, n=2:4096+1~12288
func getCurrentN(height int64) uint32 {
if height <= 0 {
panic("height should bigger than 0")
}
var totalCycle uint32 = 1 << 30
offsetHeight := getNHeight(6)
for n := uint32(0); n < totalCycle; n++ {
leftVal := getNHeight(n)
rightVal := getNHeight(n + 1)
if offsetHeight+height > leftVal && offsetHeight+height <= rightVal {
return n + 1
}
}
panic("not enought total cycle")
}
//客户原有链大约50s出一个块,一个块是32/16/8..coins, 我们平均5s一个块,需要/10
func calcCoins(n uint32) int64 {
if n <= startN {
return 1e7 * (1 << (startN - n))
}
v := 1 << (n - startN)
vf := 1e7 / v
return int64(math.Trunc(float64(vf)))
}
func customRewardMiner(coinReward int64, miners []string, height int64) ([]*pt.ParaMinerReward, int64) {
//找零
var change int64
var rewards []*pt.ParaMinerReward
coins, _, _ := getCustomReward(nil, height)
var sum int64
//get quto to miner
for _, m := range miners {
if v, ok := addrsMap[m]; ok {
amount := (v * coins) / minerUnit
sum += amount
r := &pt.ParaMinerReward{Addr: m, Amount: amount}
rewards = append(rewards, r)
}
}
//所有找零给addrC
change = coins - sum
if change > 0 {
val := strings.Split(addrBoss, ":")
r := &pt.ParaMinerReward{Addr: val[0], Amount: change}
rewards = append(rewards, r)
}
return rewards, 0
}
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package executor
import (
"fmt"
"github.com/bmizerany/assert"
"testing"
_ "github.com/33cn/plugin/plugin/crypto/bls"
)
func TestGetNHeight(t *testing.T) {
h := getNHeight(1)
assert.Equal(t, int64(4096), h)
h = getNHeight(2)
assert.Equal(t, int64(12288), h)
h = getNHeight(6)
assert.Equal(t, int64(258048), h)
h = getNHeight(7)
assert.Equal(t, int64(520192), h)
}
func TestGetN(t *testing.T) {
n := getCurrentN(1)
assert.Equal(t, uint32(7), n)
n = getCurrentN(262144)
assert.Equal(t, uint32(7), n)
n = getCurrentN(262145)
assert.Equal(t, uint32(8), n)
n = getCurrentN(3932160)
assert.Equal(t, uint32(10), n)
n = getCurrentN(3932161)
assert.Equal(t, uint32(11), n)
}
func TestGetBlockNum(t *testing.T) {
offset := getNHeight(6)
for n := uint32(7); n < 50; n++ {
blocks := getNHeight(n) - offset
secs := blocks * 5
secsOfYear := int64(60 * 60 * 24 * 365)
year := secs / secsOfYear
fmt.Println("n=", n, "coins=", calcCoins(n), "height=", blocks, "year=", year)
}
}
func TestGetCoins(t *testing.T) {
c := calcCoins(7)
assert.Equal(t, int64(1.6*1e8), c)
c = calcCoins(6)
assert.Equal(t, int64(3.2*1e8), c)
//for i:=uint32(0);i<50;i++{
// coin := calcCoins(i)
// fmt.Println("n",i,"coins",coin)
//}
}
func getCustomRewardMinerRst(miners []string, height int64) (map[string]int64, int64) {
res, change := customRewardMiner(0, miners, height)
check := make(map[string]int64)
for _, r := range res {
//fmt.Println("addr",r.Addr,"amount",r.Amount)
check[r.Addr] += r.Amount
}
return check, change
}
func TestCustomRewardMiner(t *testing.T) {
staffA := "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"
staffB := "1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"
staffBoss := "1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
miners := []string{staffA, staffB, staffBoss}
offsetHeight := getNHeight(6)
//height=1
height := int64(1)
check, change := getCustomRewardMinerRst(miners, height)
assert.Equal(t, int64(3*1e7), check[staffA])
assert.Equal(t, int64(3*1e7), check[staffB])
assert.Equal(t, int64(10*1e7), check[staffBoss])
assert.Equal(t, int64(0), change)
//height=262144
var n uint32
n = 8
height = getNHeight(n)
coins := calcCoins(n)
fmt.Println("n=", n, "coins=", coins)
check, change = getCustomRewardMinerRst(miners, height-offsetHeight)
assert.Equal(t, int64(1.5*1e7), check[staffA])
assert.Equal(t, int64(1.5*1e7), check[staffB])
assert.Equal(t, int64(5*1e7), check[staffBoss])
assert.Equal(t, int64(0), change)
//
n = 17
height = getNHeight(n)
coins = calcCoins(n)
fmt.Println("n=", n, "coins=", coins)
check, change = getCustomRewardMinerRst(miners, height-offsetHeight)
assert.Equal(t, int64(29296), check[staffA])
assert.Equal(t, int64(29296), check[staffB])
assert.Equal(t, int64(97658), check[staffBoss])
assert.Equal(t, int64(0), change)
//
n = 18
height = getNHeight(n)
coins = calcCoins(n)
fmt.Println("n=", n, "coins=", coins)
check, change = getCustomRewardMinerRst(miners, height-offsetHeight)
assert.Equal(t, int64(14648), check[staffA])
assert.Equal(t, int64(14648), check[staffB])
assert.Equal(t, int64(48829), check[staffBoss])
assert.Equal(t, int64(0), change)
}
......@@ -40,28 +40,64 @@ func (a *action) getBindAddrs(nodes []string, statusHeight int64) (*pt.ParaNodeB
}
func (a *action) rewardSuperNode(coinReward int64, miners []string, statusHeight int64) (*types.Receipt, int64, error) {
//分配给矿工的单位奖励
minerUnit := coinReward / int64(len(miners))
type rewardFn func(coinReward int64, miners []string, height int64) ([]*pt.ParaMinerReward, int64)
var rewardMiner = make(map[int]rewardFn)
func init() {
rewardMiner[normalMiner] = rewardEven
}
func rewardEven(coinReward int64, miners []string, height int64) ([]*pt.ParaMinerReward, int64) {
//找零
var change int64
receipt := &types.Receipt{Ty: types.ExecOk}
var rewards []*pt.ParaMinerReward
//分配给矿工的平均奖励
minerUnit := coinReward / int64(len(miners))
if minerUnit > 0 {
for _, m := range miners {
r := &pt.ParaMinerReward{Addr: m, Amount: minerUnit}
rewards = append(rewards, r)
}
//如果不等分转到发展基金
change = coinReward % minerUnit
for _, addr := range miners {
rep, err := a.coinsAccount.ExecDeposit(addr, a.execaddr, minerUnit)
}
return rewards, change
}
if err != nil {
clog.Error("paracross super node reward deposit err", "height", statusHeight,
"execAddr", a.execaddr, "minerAddr", addr, "amount", minerUnit, "err", err)
return nil, 0, err
}
receipt = mergeReceipt(receipt, rep)
}
func (a *action) rewardSuperNode(coinReward int64, miners []string, statusHeight int64) (*types.Receipt, int64, error) {
cfg := a.api.GetConfig()
receipt := &types.Receipt{Ty: types.ExecOk}
mode := int(cfg.MGInt("mver.consensus.paracross.minerMode", a.height))
if rewardMiner[mode] == nil {
panic("getReward not be set depend on consensus.paracross.minerMode")
}
rewards, change := rewardMiner[mode](coinReward, miners, statusHeight)
resp, err := a.rewardDeposit(rewards, statusHeight)
if err != nil {
return nil, 0, err
}
receipt = mergeReceipt(receipt, resp)
return receipt, change, nil
}
func (a *action) rewardDeposit(rewards []*pt.ParaMinerReward, statusHeight int64) (*types.Receipt, error) {
receipt := &types.Receipt{}
for _, v := range rewards {
rep, err := a.coinsAccount.ExecDeposit(v.Addr, a.execaddr, v.Amount)
if err != nil {
clog.Error("paracross super node reward deposit err", "height", statusHeight,
"execAddr", a.execaddr, "minerAddr", v.Addr, "amount", v.Amount, "err", err)
return nil, err
}
receipt = mergeReceipt(receipt, rep)
}
return receipt, nil
}
//奖励委托挖矿账户
func (a *action) rewardBindAddr(coinReward int64, bindList *pt.ParaNodeBindList, statusHeight int64) (*types.Receipt, int64, error) {
if coinReward <= 0 {
......@@ -103,28 +139,42 @@ func (a *action) rewardBindAddr(coinReward int64, bindList *pt.ParaNodeBindList,
return receipt, change, nil
}
// reward 挖矿奖励, 主要处理挖矿分配逻辑,先实现基本策略,后面根据需求进行重构
func (a *action) reward(nodeStatus *pt.ParacrossNodeStatus, stat *pt.ParacrossHeightStatus) (*types.Receipt, error) {
//获取挖矿相关配置,这里需注意是共识的高度,而不是交易的高度
cfg := a.api.GetConfig()
coinReward := cfg.MGInt("mver.consensus.paracross.coinReward", nodeStatus.Height)
fundReward := cfg.MGInt("mver.consensus.paracross.coinDevFund", nodeStatus.Height)
coinBaseReward := cfg.MGInt("mver.consensus.paracross.coinBaseReward", nodeStatus.Height)
func getNormalReward(cfg *types.Chain33Config, height int64) (int64, int64, int64) {
coinReward := cfg.MGInt("mver.consensus.paracross.coinReward", height)
fundReward := cfg.MGInt("mver.consensus.paracross.coinDevFund", height)
coinBaseReward := cfg.MGInt("mver.consensus.paracross.coinBaseReward", height)
if coinReward < 0 || fundReward < 0 || coinBaseReward < 0 {
panic("para config consensus.paracross.coinReward should bigger than 0")
}
decimalMode := cfg.MIsEnable("mver.consensus.paracross.decimalMode", nodeStatus.Height)
//decimalMode=false,意味着精简模式,需要乘1e8
decimalMode := cfg.MIsEnable("mver.consensus.paracross.decimalMode", height)
if !decimalMode {
coinReward *= types.Coin
fundReward *= types.Coin
coinBaseReward *= types.Coin
}
fundAddr := cfg.MGStr("mver.consensus.fundKeyAddr", nodeStatus.Height)
//防止coinBaseReward 设置出错场景, coinBaseReward 一定要比coinReward小
if coinBaseReward >= coinReward {
coinBaseReward = coinReward / 10
}
return coinReward, fundReward, coinBaseReward
}
// reward 挖矿奖励, 主要处理挖矿分配逻辑,先实现基本策略,后面根据需求进行重构
func (a *action) reward(nodeStatus *pt.ParacrossNodeStatus, stat *pt.ParacrossHeightStatus) (*types.Receipt, error) {
//获取挖矿相关配置,这里需注意是共识的高度,而不是交易的高度
cfg := a.api.GetConfig()
//此分叉后 0高度不产生挖矿奖励,也就是以后的新版本默认0高度不产生挖矿奖励
if nodeStatus.Height == 0 && cfg.IsDappFork(nodeStatus.Height, pt.ParaX, pt.ForkParaFullMinerHeight) {
return nil, nil
}
mode := int(cfg.MGInt("mver.consensus.paracross.minerMode", a.height))
coinReward, fundReward, coinBaseReward := getConfigRewards[mode](cfg, nodeStatus.Height)
fundAddr := cfg.MGStr("mver.consensus.fundKeyAddr", nodeStatus.Height)
//超级节点地址
nodeAddrs := getSuperNodes(stat.Details, nodeStatus.BlockHash)
//委托地址
......
......@@ -323,6 +323,11 @@ message ParacrossMinerAction {
bool isSelfConsensus = 2;
}
message ParaMinerReward{
string addr = 1;
int64 amount = 2;
}
message CrossAssetTransfer {
string assetExec = 1;
string assetSymbol = 2;
......
......@@ -6,13 +6,12 @@ package types
import (
context "context"
fmt "fmt"
math "math"
types "github.com/33cn/chain33/types"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
......@@ -2824,6 +2823,53 @@ func (m *ParacrossMinerAction) GetIsSelfConsensus() bool {
return false
}
type ParaMinerReward struct {
Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ParaMinerReward) Reset() { *m = ParaMinerReward{} }
func (m *ParaMinerReward) String() string { return proto.CompactTextString(m) }
func (*ParaMinerReward) ProtoMessage() {}
func (*ParaMinerReward) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{44}
}
func (m *ParaMinerReward) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaMinerReward.Unmarshal(m, b)
}
func (m *ParaMinerReward) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaMinerReward.Marshal(b, m, deterministic)
}
func (m *ParaMinerReward) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaMinerReward.Merge(m, src)
}
func (m *ParaMinerReward) XXX_Size() int {
return xxx_messageInfo_ParaMinerReward.Size(m)
}
func (m *ParaMinerReward) XXX_DiscardUnknown() {
xxx_messageInfo_ParaMinerReward.DiscardUnknown(m)
}
var xxx_messageInfo_ParaMinerReward proto.InternalMessageInfo
func (m *ParaMinerReward) GetAddr() string {
if m != nil {
return m.Addr
}
return ""
}
func (m *ParaMinerReward) GetAmount() int64 {
if m != nil {
return m.Amount
}
return 0
}
type CrossAssetTransfer struct {
AssetExec string `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
AssetSymbol string `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
......@@ -2840,7 +2886,7 @@ func (m *CrossAssetTransfer) Reset() { *m = CrossAssetTransfer{} }
func (m *CrossAssetTransfer) String() string { return proto.CompactTextString(m) }
func (*CrossAssetTransfer) ProtoMessage() {}
func (*CrossAssetTransfer) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{44}
return fileDescriptor_6a397e38c9ea6747, []int{45}
}
func (m *CrossAssetTransfer) XXX_Unmarshal(b []byte) error {
......@@ -2921,7 +2967,7 @@ func (m *ParacrossAction) Reset() { *m = ParacrossAction{} }
func (m *ParacrossAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossAction) ProtoMessage() {}
func (*ParacrossAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{45}
return fileDescriptor_6a397e38c9ea6747, []int{46}
}
func (m *ParacrossAction) XXX_Unmarshal(b []byte) error {
......@@ -3149,7 +3195,7 @@ func (m *ReceiptParacrossCommit) Reset() { *m = ReceiptParacrossCommit{}
func (m *ReceiptParacrossCommit) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossCommit) ProtoMessage() {}
func (*ReceiptParacrossCommit) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{46}
return fileDescriptor_6a397e38c9ea6747, []int{47}
}
func (m *ReceiptParacrossCommit) XXX_Unmarshal(b []byte) error {
......@@ -3209,7 +3255,7 @@ func (m *ReceiptParacrossMiner) Reset() { *m = ReceiptParacrossMiner{} }
func (m *ReceiptParacrossMiner) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossMiner) ProtoMessage() {}
func (*ReceiptParacrossMiner) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{47}
return fileDescriptor_6a397e38c9ea6747, []int{48}
}
func (m *ReceiptParacrossMiner) XXX_Unmarshal(b []byte) error {
......@@ -3262,7 +3308,7 @@ func (m *ReceiptParacrossDone) Reset() { *m = ReceiptParacrossDone{} }
func (m *ReceiptParacrossDone) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossDone) ProtoMessage() {}
func (*ReceiptParacrossDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{48}
return fileDescriptor_6a397e38c9ea6747, []int{49}
}
func (m *ReceiptParacrossDone) XXX_Unmarshal(b []byte) error {
......@@ -3400,7 +3446,7 @@ func (m *ReceiptParacrossRecord) Reset() { *m = ReceiptParacrossRecord{}
func (m *ReceiptParacrossRecord) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossRecord) ProtoMessage() {}
func (*ReceiptParacrossRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{49}
return fileDescriptor_6a397e38c9ea6747, []int{50}
}
func (m *ReceiptParacrossRecord) XXX_Unmarshal(b []byte) error {
......@@ -3448,7 +3494,7 @@ func (m *ParacrossTx) Reset() { *m = ParacrossTx{} }
func (m *ParacrossTx) String() string { return proto.CompactTextString(m) }
func (*ParacrossTx) ProtoMessage() {}
func (*ParacrossTx) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{50}
return fileDescriptor_6a397e38c9ea6747, []int{51}
}
func (m *ParacrossTx) XXX_Unmarshal(b []byte) error {
......@@ -3489,7 +3535,7 @@ func (m *ReqParacrossTitleHeight) Reset() { *m = ReqParacrossTitleHeight
func (m *ReqParacrossTitleHeight) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossTitleHeight) ProtoMessage() {}
func (*ReqParacrossTitleHeight) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{51}
return fileDescriptor_6a397e38c9ea6747, []int{52}
}
func (m *ReqParacrossTitleHeight) XXX_Unmarshal(b []byte) error {
......@@ -3544,7 +3590,7 @@ func (m *RespParacrossDone) Reset() { *m = RespParacrossDone{} }
func (m *RespParacrossDone) String() string { return proto.CompactTextString(m) }
func (*RespParacrossDone) ProtoMessage() {}
func (*RespParacrossDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{52}
return fileDescriptor_6a397e38c9ea6747, []int{53}
}
func (m *RespParacrossDone) XXX_Unmarshal(b []byte) error {
......@@ -3639,7 +3685,7 @@ func (m *RespParacrossTitles) Reset() { *m = RespParacrossTitles{} }
func (m *RespParacrossTitles) String() string { return proto.CompactTextString(m) }
func (*RespParacrossTitles) ProtoMessage() {}
func (*RespParacrossTitles) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{53}
return fileDescriptor_6a397e38c9ea6747, []int{54}
}
func (m *RespParacrossTitles) XXX_Unmarshal(b []byte) error {
......@@ -3679,7 +3725,7 @@ func (m *ReqParacrossTitleHash) Reset() { *m = ReqParacrossTitleHash{} }
func (m *ReqParacrossTitleHash) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossTitleHash) ProtoMessage() {}
func (*ReqParacrossTitleHash) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{54}
return fileDescriptor_6a397e38c9ea6747, []int{55}
}
func (m *ReqParacrossTitleHash) XXX_Unmarshal(b []byte) error {
......@@ -3741,7 +3787,7 @@ func (m *ParacrossAsset) Reset() { *m = ParacrossAsset{} }
func (m *ParacrossAsset) String() string { return proto.CompactTextString(m) }
func (*ParacrossAsset) ProtoMessage() {}
func (*ParacrossAsset) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{55}
return fileDescriptor_6a397e38c9ea6747, []int{56}
}
func (m *ParacrossAsset) XXX_Unmarshal(b []byte) error {
......@@ -3862,7 +3908,7 @@ func (m *ParaLocalDbBlock) Reset() { *m = ParaLocalDbBlock{} }
func (m *ParaLocalDbBlock) String() string { return proto.CompactTextString(m) }
func (*ParaLocalDbBlock) ProtoMessage() {}
func (*ParaLocalDbBlock) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{56}
return fileDescriptor_6a397e38c9ea6747, []int{57}
}
func (m *ParaLocalDbBlock) XXX_Unmarshal(b []byte) error {
......@@ -3941,7 +3987,7 @@ func (m *ParaLocalDbBlockInfo) Reset() { *m = ParaLocalDbBlockInfo{} }
func (m *ParaLocalDbBlockInfo) String() string { return proto.CompactTextString(m) }
func (*ParaLocalDbBlockInfo) ProtoMessage() {}
func (*ParaLocalDbBlockInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{57}
return fileDescriptor_6a397e38c9ea6747, []int{58}
}
func (m *ParaLocalDbBlockInfo) XXX_Unmarshal(b []byte) error {
......@@ -4018,7 +4064,7 @@ func (m *ParaBlsSignSumDetails) Reset() { *m = ParaBlsSignSumDetails{} }
func (m *ParaBlsSignSumDetails) String() string { return proto.CompactTextString(m) }
func (*ParaBlsSignSumDetails) ProtoMessage() {}
func (*ParaBlsSignSumDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{58}
return fileDescriptor_6a397e38c9ea6747, []int{59}
}
func (m *ParaBlsSignSumDetails) XXX_Unmarshal(b []byte) error {
......@@ -4080,7 +4126,7 @@ func (m *ParaBlsSignSumDetailsShow) Reset() { *m = ParaBlsSignSumDetails
func (m *ParaBlsSignSumDetailsShow) String() string { return proto.CompactTextString(m) }
func (*ParaBlsSignSumDetailsShow) ProtoMessage() {}
func (*ParaBlsSignSumDetailsShow) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{59}
return fileDescriptor_6a397e38c9ea6747, []int{60}
}
func (m *ParaBlsSignSumDetailsShow) XXX_Unmarshal(b []byte) error {
......@@ -4134,7 +4180,7 @@ func (m *ParaBlsSignSumInfo) Reset() { *m = ParaBlsSignSumInfo{} }
func (m *ParaBlsSignSumInfo) String() string { return proto.CompactTextString(m) }
func (*ParaBlsSignSumInfo) ProtoMessage() {}
func (*ParaBlsSignSumInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{60}
return fileDescriptor_6a397e38c9ea6747, []int{61}
}
func (m *ParaBlsSignSumInfo) XXX_Unmarshal(b []byte) error {
......@@ -4182,7 +4228,7 @@ func (m *LeaderSyncInfo) Reset() { *m = LeaderSyncInfo{} }
func (m *LeaderSyncInfo) String() string { return proto.CompactTextString(m) }
func (*LeaderSyncInfo) ProtoMessage() {}
func (*LeaderSyncInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{61}
return fileDescriptor_6a397e38c9ea6747, []int{62}
}
func (m *LeaderSyncInfo) XXX_Unmarshal(b []byte) error {
......@@ -4239,7 +4285,7 @@ func (m *ParaP2PSubMsg) Reset() { *m = ParaP2PSubMsg{} }
func (m *ParaP2PSubMsg) String() string { return proto.CompactTextString(m) }
func (*ParaP2PSubMsg) ProtoMessage() {}
func (*ParaP2PSubMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{62}
return fileDescriptor_6a397e38c9ea6747, []int{63}
}
func (m *ParaP2PSubMsg) XXX_Unmarshal(b []byte) error {
......@@ -4325,7 +4371,7 @@ func (m *ElectionStatus) Reset() { *m = ElectionStatus{} }
func (m *ElectionStatus) String() string { return proto.CompactTextString(m) }
func (*ElectionStatus) ProtoMessage() {}
func (*ElectionStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{63}
return fileDescriptor_6a397e38c9ea6747, []int{64}
}
func (m *ElectionStatus) XXX_Unmarshal(b []byte) error {
......@@ -4371,7 +4417,7 @@ func (m *BlsPubKey) Reset() { *m = BlsPubKey{} }
func (m *BlsPubKey) String() string { return proto.CompactTextString(m) }
func (*BlsPubKey) ProtoMessage() {}
func (*BlsPubKey) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{64}
return fileDescriptor_6a397e38c9ea6747, []int{65}
}
func (m *BlsPubKey) XXX_Unmarshal(b []byte) error {
......@@ -4444,6 +4490,7 @@ func init() {
proto.RegisterType((*ParacrossCommitBlsInfo)(nil), "types.ParacrossCommitBlsInfo")
proto.RegisterType((*ParacrossCommitAction)(nil), "types.ParacrossCommitAction")
proto.RegisterType((*ParacrossMinerAction)(nil), "types.ParacrossMinerAction")
proto.RegisterType((*ParaMinerReward)(nil), "types.ParaMinerReward")
proto.RegisterType((*CrossAssetTransfer)(nil), "types.CrossAssetTransfer")
proto.RegisterType((*ParacrossAction)(nil), "types.ParacrossAction")
proto.RegisterType((*ReceiptParacrossCommit)(nil), "types.ReceiptParacrossCommit")
......@@ -4472,192 +4519,193 @@ func init() {
}
var fileDescriptor_6a397e38c9ea6747 = []byte{
// 2946 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0xcd, 0x6f, 0x24, 0x47,
0xf5, 0xee, 0xf9, 0xf2, 0xcc, 0xb3, 0xc7, 0x5e, 0x77, 0xbc, 0xce, 0xc4, 0x49, 0x56, 0x56, 0x2b,
0xbf, 0xc8, 0x3f, 0xb2, 0xf1, 0x66, 0x9d, 0x10, 0x14, 0x21, 0x04, 0xb1, 0x77, 0x93, 0xb1, 0xb2,
0x0e, 0x9b, 0xb2, 0x03, 0x48, 0x11, 0x88, 0xf6, 0x4c, 0xd9, 0x6e, 0x65, 0xa6, 0x7b, 0xb6, 0xab,
0x27, 0x6b, 0x23, 0xa4, 0x70, 0x00, 0x6e, 0x48, 0x5c, 0x90, 0x00, 0x09, 0x2e, 0x70, 0x43, 0xe2,
0xc4, 0x99, 0x03, 0x12, 0x97, 0x88, 0x4b, 0x38, 0x72, 0xe3, 0x86, 0xc4, 0x91, 0x7f, 0x00, 0xbd,
0x57, 0x55, 0xdd, 0x55, 0xd5, 0x3d, 0x63, 0x27, 0x9b, 0x0b, 0xb7, 0xae, 0xd7, 0xaf, 0xaa, 0xde,
0xf7, 0x57, 0x37, 0xac, 0x4e, 0xc2, 0x34, 0x1c, 0xa4, 0x89, 0x10, 0x3b, 0x93, 0x34, 0xc9, 0x12,
0xbf, 0x99, 0x5d, 0x4e, 0xb8, 0xd8, 0x5c, 0xcb, 0xd2, 0x30, 0x16, 0xe1, 0x20, 0x8b, 0x92, 0x58,
0xbe, 0xd9, 0x5c, 0x1e, 0x24, 0xe3, 0x71, 0xbe, 0xba, 0x71, 0x32, 0x4a, 0x06, 0x1f, 0x0e, 0xce,
0xc3, 0x48, 0x41, 0x82, 0x07, 0xb0, 0xf1, 0x50, 0x1f, 0x76, 0x94, 0x85, 0xd9, 0x54, 0xdc, 0xe3,
0x59, 0x18, 0x8d, 0x84, 0xbf, 0x0e, 0xcd, 0x70, 0x38, 0x4c, 0x45, 0xcf, 0xdb, 0xaa, 0x6f, 0x77,
0x98, 0x5c, 0xf8, 0xcf, 0x41, 0x87, 0xce, 0xe8, 0x87, 0xe2, 0xbc, 0x57, 0xdb, 0xaa, 0x6f, 0x2f,
0xb3, 0x02, 0x10, 0x7c, 0x00, 0xcf, 0x3a, 0xa7, 0xed, 0xe1, 0x3b, 0x7d, 0xe4, 0x2d, 0x80, 0x1c,
0x57, 0x9e, 0xbb, 0xcc, 0x0c, 0x08, 0x1e, 0x9e, 0x5d, 0x30, 0x2e, 0xa6, 0xa3, 0x4c, 0xe8, 0xc3,
0x73, 0x40, 0xf0, 0xeb, 0x1a, 0xdc, 0xcc, 0x4f, 0xef, 0xf3, 0xe8, 0xec, 0x3c, 0x93, 0x77, 0xf8,
0x1b, 0xd0, 0x12, 0xf4, 0xd4, 0xf3, 0xb6, 0xbc, 0xed, 0x26, 0x53, 0x2b, 0x64, 0x21, 0x8b, 0xb2,
0x11, 0xef, 0xd5, 0xb6, 0x3c, 0x64, 0x81, 0x16, 0x88, 0x7d, 0x4e, 0xbb, 0x7b, 0xf5, 0x2d, 0x6f,
0xbb, 0xce, 0xd4, 0xca, 0xff, 0x0a, 0x2c, 0x0e, 0x25, 0xa1, 0xbd, 0xc6, 0x96, 0xb7, 0xbd, 0xb4,
0xfb, 0xfc, 0x0e, 0x89, 0x75, 0xa7, 0x5a, 0x40, 0x4c, 0x63, 0x23, 0x5b, 0xe3, 0x30, 0x8a, 0x25,
0x49, 0xbd, 0x26, 0x1d, 0x6a, 0x40, 0xfc, 0x4d, 0x68, 0xd3, 0x0a, 0x45, 0xd6, 0xda, 0xf2, 0xb6,
0x97, 0x59, 0xbe, 0xf6, 0xdf, 0x82, 0xe5, 0x13, 0x43, 0x44, 0xbd, 0x45, 0xba, 0x39, 0xa8, 0xbe,
0xd9, 0x14, 0x26, 0xb3, 0xf6, 0x05, 0xff, 0xf2, 0xa0, 0x57, 0x29, 0x1c, 0x26, 0x26, 0x5f, 0x90,
0x7c, 0x6c, 0x36, 0x1b, 0x73, 0xd9, 0x6c, 0xd2, 0x81, 0x05, 0x9b, 0x5b, 0xb0, 0x84, 0x86, 0x18,
0x65, 0x6f, 0x92, 0x49, 0xb5, 0xc8, 0xa4, 0x4c, 0x90, 0xbf, 0x0d, 0xab, 0x72, 0xb9, 0x97, 0x9b,
0xd7, 0x22, 0x61, 0xb9, 0xe0, 0xe0, 0x57, 0x1e, 0xac, 0x3a, 0x82, 0x29, 0x38, 0xf1, 0xaa, 0x39,
0xa9, 0x59, 0x9c, 0x58, 0x46, 0x5c, 0x27, 0x8d, 0x14, 0x80, 0xcf, 0xcc, 0xa7, 0xa1, 0xce, 0xe0,
0xf7, 0xa6, 0x1a, 0xf6, 0x93, 0x58, 0xf0, 0x58, 0x4c, 0xe7, 0x13, 0x89, 0xa2, 0x39, 0x2f, 0xee,
0x93, 0x94, 0x9a, 0x20, 0xff, 0x05, 0xe8, 0x0e, 0xe4, 0x51, 0x7d, 0x53, 0x2f, 0x36, 0xd0, 0xff,
0x12, 0xdc, 0x50, 0x80, 0x42, 0x82, 0x0d, 0xba, 0xa8, 0x04, 0x0f, 0xfe, 0xe4, 0x81, 0x8f, 0x64,
0xbe, 0x9b, 0x0c, 0x39, 0x8a, 0x7f, 0x3f, 0x89, 0x4f, 0xa3, 0xb3, 0x19, 0x04, 0xae, 0x40, 0x2d,
0x99, 0x10, 0x5d, 0x5d, 0x56, 0x4b, 0x26, 0xb8, 0x8e, 0x86, 0x44, 0x43, 0x87, 0xd5, 0xa2, 0xa1,
0xef, 0x43, 0x03, 0x63, 0x83, 0xba, 0x8c, 0x9e, 0xf1, 0xa4, 0x8f, 0xc2, 0xd1, 0x94, 0x93, 0x80,
0xba, 0x4c, 0x2e, 0xa4, 0x15, 0x44, 0xb1, 0x78, 0x2b, 0x4d, 0x7e, 0xc0, 0x63, 0xf2, 0x05, 0x64,
0xb5, 0x00, 0x49, 0xcd, 0x88, 0x87, 0xd3, 0x93, 0x77, 0xf8, 0x25, 0xf9, 0x42, 0x87, 0x15, 0x80,
0xe0, 0x1b, 0x05, 0xd5, 0xdf, 0x4a, 0x32, 0x2e, 0x6d, 0x7f, 0x46, 0xa0, 0x42, 0x0a, 0x92, 0x8c,
0xcb, 0x38, 0xd2, 0x61, 0x72, 0x11, 0xfc, 0xd1, 0x83, 0x75, 0x93, 0xf1, 0x83, 0xa1, 0xd2, 0x8d,
0x66, 0xc2, 0x33, 0x98, 0xb8, 0x05, 0x30, 0x49, 0x93, 0x49, 0x22, 0xc2, 0xd1, 0xc1, 0x50, 0xf9,
0x88, 0x01, 0x41, 0xf3, 0x7a, 0x34, 0x8d, 0xb2, 0x03, 0x2d, 0x0c, 0xb5, 0x32, 0xdc, 0xad, 0x51,
0xed, 0x6e, 0x4d, 0x53, 0xbc, 0x16, 0xcb, 0x2d, 0x97, 0xe5, 0x5f, 0xd4, 0xe0, 0x86, 0x26, 0x38,
0x27, 0x56, 0x6a, 0xc0, 0xcb, 0x35, 0x50, 0x5c, 0x58, 0xab, 0xbe, 0xb0, 0x6e, 0x5e, 0x78, 0x0b,
0x20, 0x0b, 0xd3, 0x33, 0x4e, 0x8e, 0xa7, 0xb4, 0x66, 0x40, 0x5c, 0x2d, 0x35, 0xcb, 0x5a, 0xba,
0xa3, 0x65, 0xdb, 0xa2, 0x68, 0xf5, 0x8c, 0x11, 0xad, 0x6c, 0xdd, 0x28, 0xb1, 0xa3, 0xcb, 0x9c,
0xa6, 0xc9, 0x98, 0x2e, 0x94, 0x5a, 0xcd, 0xd7, 0x86, 0x93, 0xb6, 0xcb, 0x4e, 0xaa, 0xe5, 0xd2,
0x71, 0xe5, 0xf2, 0x67, 0x0f, 0x6e, 0x32, 0x3e, 0xe0, 0xd1, 0x24, 0xd3, 0xd7, 0x2a, 0x23, 0xae,
0xd2, 0xe4, 0x5d, 0x68, 0x0d, 0xe8, 0x2d, 0x09, 0xa8, 0x4c, 0x71, 0xe1, 0x03, 0x4c, 0x21, 0xfa,
0x2f, 0x41, 0x63, 0x92, 0xf2, 0x8f, 0x48, 0x74, 0x4b, 0xbb, 0x4f, 0x3b, 0x1b, 0xb4, 0x2a, 0x18,
0x21, 0xf9, 0x77, 0x61, 0x71, 0x30, 0x4d, 0x53, 0x1e, 0x67, 0x2a, 0x75, 0xcc, 0xc4, 0xd7, 0x78,
0xc1, 0xef, 0x3c, 0x78, 0xde, 0x61, 0x00, 0xa9, 0x40, 0xb4, 0xf7, 0x27, 0xc3, 0x30, 0xe3, 0x96,
0xd0, 0x3c, 0x47, 0x68, 0x77, 0x14, 0x75, 0x92, 0x9d, 0x67, 0x2b, 0xd8, 0x71, 0x28, 0xfc, 0x72,
0x41, 0x61, 0xfd, 0xea, 0x3d, 0x39, 0x95, 0xff, 0xf1, 0xe0, 0x69, 0x87, 0x4a, 0xd2, 0x6e, 0x12,
0xf3, 0x92, 0x15, 0x56, 0x67, 0x13, 0xdb, 0xda, 0xea, 0x25, 0x6b, 0xc3, 0xf7, 0x49, 0x16, 0x8e,
0xf0, 0x68, 0xed, 0x30, 0x06, 0x84, 0x6a, 0x02, 0x5c, 0xe1, 0xb5, 0x64, 0x8b, 0x4d, 0x56, 0x00,
0x28, 0x16, 0x27, 0x22, 0xa3, 0x97, 0x2d, 0x7a, 0x99, 0xaf, 0xfd, 0x1e, 0x2c, 0xa2, 0xf5, 0x31,
0x91, 0x29, 0x9b, 0xd3, 0x4b, 0xbc, 0x73, 0x98, 0xc4, 0x5c, 0x32, 0x4b, 0x66, 0xd7, 0x64, 0x06,
0x04, 0x75, 0xf3, 0x94, 0x66, 0xf7, 0xed, 0x34, 0x99, 0x4e, 0x9e, 0x28, 0x3e, 0xe6, 0xf1, 0x49,
0xba, 0x9a, 0x8a, 0x4f, 0x57, 0x7b, 0x19, 0x55, 0x4b, 0xca, 0xde, 0x85, 0x8a, 0x0c, 0x06, 0x24,
0xf8, 0xb7, 0x4b, 0xe5, 0x17, 0x12, 0x1d, 0xb6, 0x60, 0xa9, 0xd0, 0x8e, 0xa6, 0xd9, 0x04, 0x5d,
0x83, 0x72, 0xd3, 0x72, 0x5b, 0x33, 0xdd, 0x7d, 0xd1, 0xad, 0x2e, 0x0c, 0x6e, 0xdb, 0x25, 0x6e,
0x3f, 0xf1, 0x60, 0xd3, 0xb1, 0x44, 0x53, 0x35, 0x55, 0x5e, 0xbf, 0xeb, 0x78, 0xfd, 0xa6, 0x63,
0xf2, 0xc6, 0xfe, 0xdc, 0xed, 0x77, 0x2c, 0xb7, 0xaf, 0xdc, 0x61, 0xf9, 0xd5, 0x6b, 0xae, 0xe7,
0xcf, 0xdb, 0x92, 0xbb, 0xd5, 0x4f, 0x3d, 0x58, 0x67, 0xfc, 0x51, 0x5e, 0x29, 0x50, 0x88, 0x88,
0x4f, 0x93, 0xd9, 0x16, 0x16, 0xe9, 0x04, 0x64, 0x66, 0xdc, 0xba, 0xc1, 0xec, 0xac, 0xa4, 0x63,
0x85, 0xd1, 0xa6, 0x1b, 0x46, 0xf7, 0x61, 0x83, 0x71, 0x31, 0xb1, 0x08, 0x91, 0x5a, 0xfe, 0x7f,
0xa8, 0x47, 0x43, 0x99, 0x53, 0xe7, 0x84, 0x33, 0xc4, 0x09, 0xde, 0xc6, 0x18, 0xe1, 0x1c, 0x42,
0x6c, 0x0b, 0xff, 0xb6, 0x79, 0xca, 0x3c, 0xd1, 0xd0, 0x41, 0x13, 0x99, 0xeb, 0xf6, 0xa2, 0x78,
0x78, 0x18, 0xc5, 0x3c, 0xdd, 0x1f, 0x0f, 0xc9, 0x2e, 0xa2, 0x78, 0xf8, 0x26, 0x35, 0x35, 0xaa,
0x7e, 0x35, 0x20, 0xc4, 0x5f, 0x14, 0x0f, 0xf7, 0xd1, 0xfc, 0x54, 0xf1, 0x54, 0x00, 0x8a, 0xe8,
0x83, 0xf7, 0xd9, 0xd1, 0x07, 0x21, 0xc1, 0x5f, 0x3d, 0x58, 0xb3, 0xae, 0x24, 0x2d, 0xcc, 0x28,
0x06, 0xf0, 0xd8, 0x23, 0xd3, 0x93, 0x0c, 0x88, 0x4d, 0x47, 0x7d, 0x3e, 0x1d, 0x0d, 0x97, 0x8e,
0xbc, 0x22, 0x3d, 0x8e, 0xc6, 0x5c, 0x79, 0x54, 0x01, 0x40, 0x8f, 0x93, 0xe5, 0xa9, 0x74, 0x1c,
0x55, 0x37, 0x19, 0xa0, 0xe0, 0xe7, 0x1e, 0xf4, 0x0c, 0xef, 0xb8, 0x9a, 0x9d, 0xdb, 0x56, 0x02,
0xe9, 0x19, 0x9a, 0xb1, 0xf6, 0x2a, 0x2b, 0xdf, 0x75, 0xb3, 0xc7, 0xec, 0x0d, 0xb9, 0x8d, 0xdf,
0x97, 0x55, 0x3a, 0xb2, 0x87, 0x18, 0xdf, 0x8c, 0x89, 0x4b, 0x31, 0x9d, 0xf0, 0x94, 0x84, 0x20,
0xa9, 0x29, 0x00, 0x68, 0xfb, 0x63, 0x3c, 0x46, 0xe7, 0x0f, 0x5a, 0x04, 0xdf, 0x29, 0xea, 0x1f,
0x3c, 0xe6, 0x41, 0x24, 0xb2, 0x19, 0x5e, 0xb2, 0x03, 0x2d, 0xda, 0x22, 0x4b, 0xbe, 0xa5, 0xdd,
0x0d, 0xc7, 0xdc, 0x14, 0x15, 0x4c, 0x61, 0x05, 0x1f, 0x97, 0x12, 0xb0, 0xbe, 0x40, 0x25, 0x60,
0x5d, 0x02, 0x78, 0x95, 0x29, 0x5d, 0x23, 0x97, 0x4b, 0x80, 0xda, 0x7c, 0xfc, 0x5c, 0x42, 0x8f,
0x31, 0x08, 0x48, 0xbf, 0xb1, 0xd8, 0x7b, 0x09, 0x1a, 0xa3, 0x48, 0x64, 0x57, 0xde, 0x8b, 0x48,
0xa8, 0x1a, 0xdd, 0xb5, 0x4a, 0xb6, 0xe7, 0xa8, 0x46, 0x21, 0x06, 0x3f, 0xd1, 0x56, 0x8f, 0x16,
0xb4, 0x7b, 0x18, 0x46, 0xf1, 0x61, 0x38, 0x31, 0x22, 0xb3, 0x37, 0xbb, 0x5b, 0xaa, 0xe9, 0x08,
0x52, 0xdd, 0x2d, 0xd5, 0xe7, 0x76, 0x4b, 0x0d, 0xbb, 0x2b, 0x0c, 0xee, 0xc9, 0x7a, 0xbe, 0x20,
0x83, 0xcc, 0x75, 0x07, 0x9a, 0x51, 0xc6, 0xc7, 0x3a, 0x6a, 0x58, 0xfc, 0x98, 0x04, 0x33, 0x89,
0x16, 0xfc, 0xb3, 0x2e, 0xf3, 0x60, 0x1e, 0x7b, 0x94, 0x47, 0xbe, 0x00, 0x5d, 0xbc, 0xa9, 0xe8,
0x86, 0x3c, 0x6a, 0xd6, 0x6c, 0x20, 0xf6, 0x9d, 0x05, 0xc0, 0x6c, 0xc1, 0x5c, 0xf0, 0x8c, 0x7c,
0x59, 0x48, 0xad, 0x61, 0x49, 0x2d, 0x80, 0xe5, 0x49, 0xca, 0x8b, 0xcb, 0x65, 0xa7, 0x68, 0xc1,
0x6c, 0xc9, 0xb6, 0xdc, 0x3e, 0x54, 0x9e, 0x80, 0xcc, 0x70, 0xd5, 0x0e, 0xeb, 0x13, 0x72, 0x18,
0x79, 0x54, 0x8e, 0xd0, 0x96, 0x27, 0xe4, 0x00, 0x94, 0x7d, 0x76, 0xb1, 0x9f, 0x4c, 0xe3, 0x4c,
0x50, 0x05, 0xdd, 0x65, 0xf9, 0x5a, 0xbe, 0x93, 0xa3, 0x95, 0x1e, 0xc8, 0x2e, 0x56, 0xaf, 0xb1,
0x72, 0xca, 0x2e, 0xe4, 0x90, 0x66, 0x89, 0xa6, 0x30, 0x7a, 0x49, 0xad, 0x28, 0x8a, 0xf9, 0x58,
0x6f, 0x5d, 0x96, 0x32, 0xb5, 0x80, 0x48, 0xb9, 0x02, 0xc8, 0x43, 0xba, 0x74, 0x88, 0x05, 0xf3,
0x6f, 0xc3, 0x5a, 0x9c, 0xc4, 0xfb, 0xd4, 0xdb, 0x1f, 0x6b, 0x22, 0x57, 0x88, 0xc8, 0xf2, 0x8b,
0x60, 0x0f, 0xd6, 0x8e, 0xf8, 0xe8, 0x54, 0x75, 0xd4, 0x47, 0x59, 0x78, 0xc6, 0x85, 0xff, 0xb2,
0x6d, 0x28, 0xda, 0x51, 0x5c, 0x44, 0x6d, 0x27, 0x0f, 0xe0, 0x86, 0xfb, 0x0a, 0x23, 0xab, 0xc8,
0xc2, 0x34, 0xeb, 0x9b, 0x86, 0x6f, 0x82, 0x50, 0xbf, 0x3c, 0x0e, 0x4f, 0x54, 0x59, 0xdb, 0x65,
0x6a, 0x15, 0xfc, 0xc3, 0x83, 0x75, 0xf7, 0x38, 0x32, 0xdf, 0xf9, 0xe5, 0x57, 0x37, 0x4f, 0xcc,
0x2f, 0x43, 0x53, 0xe0, 0x26, 0xa7, 0xc3, 0x28, 0x53, 0x4f, 0x58, 0x56, 0x4d, 0xd5, 0x70, 0x6a,
0xaa, 0x5b, 0x00, 0xfc, 0x82, 0x0f, 0xec, 0x01, 0x54, 0x01, 0xf9, 0xcc, 0xfd, 0x5a, 0xc0, 0x61,
0xe3, 0x41, 0x32, 0x08, 0x47, 0x9a, 0x98, 0x82, 0xbb, 0xbb, 0x9a, 0x6a, 0xcf, 0xea, 0x22, 0xaa,
0x24, 0xa1, 0x29, 0x27, 0x6b, 0x3a, 0x88, 0x87, 0xfc, 0x42, 0x45, 0x0f, 0xbd, 0x0c, 0x5e, 0x87,
0x15, 0x59, 0x7e, 0x21, 0x05, 0x95, 0xc2, 0xcb, 0xe7, 0x08, 0x35, 0x63, 0x8e, 0x10, 0x04, 0x70,
0x43, 0xee, 0xdb, 0x0f, 0xe3, 0x01, 0x1f, 0x55, 0xed, 0x0c, 0x3e, 0x55, 0x53, 0x22, 0x22, 0xe7,
0xaa, 0xfa, 0x3d, 0xbb, 0xd4, 0xf5, 0x7b, 0x76, 0x89, 0xd2, 0x92, 0x2c, 0xc2, 0x5c, 0xc5, 0xf4,
0x17, 0x34, 0x83, 0x2f, 0x41, 0x03, 0xc5, 0xd6, 0x5b, 0x22, 0xfc, 0x9b, 0x0a, 0xdf, 0xe6, 0xac,
0xbf, 0xc0, 0x08, 0x89, 0x5a, 0x51, 0xa2, 0x9a, 0x5c, 0xa7, 0x38, 0xde, 0x65, 0xa8, 0xbf, 0xc0,
0x14, 0xe2, 0xde, 0xa2, 0x12, 0x42, 0xf0, 0xe3, 0xa2, 0x06, 0xb6, 0x34, 0xa3, 0xd8, 0xbb, 0x63,
0xe5, 0xab, 0xb9, 0xaa, 0x29, 0x35, 0x85, 0xb5, 0xab, 0xf7, 0xe4, 0x79, 0xeb, 0x53, 0x0f, 0x9e,
0xab, 0x22, 0x63, 0x66, 0x67, 0x98, 0x9b, 0x7a, 0xed, 0x5a, 0xa6, 0x6e, 0xb7, 0x84, 0xf5, 0xf9,
0x2d, 0x61, 0x63, 0x5e, 0x4b, 0xd8, 0x9c, 0xdd, 0x12, 0xb6, 0xac, 0x96, 0x30, 0xf8, 0x18, 0x9e,
0xad, 0x62, 0x49, 0xa8, 0x52, 0xe0, 0xb6, 0x25, 0xda, 0xde, 0x0c, 0x06, 0x44, 0xb9, 0x5c, 0xaa,
0x5d, 0xb1, 0x21, 0x17, 0xea, 0x6f, 0x3d, 0xf0, 0x19, 0x7f, 0xf4, 0xde, 0x94, 0xa7, 0x97, 0x88,
0xa6, 0x62, 0x9c, 0x3d, 0xba, 0x2d, 0xa2, 0x87, 0xdb, 0x12, 0xac, 0x43, 0x73, 0x80, 0xa1, 0x52,
0x89, 0x4b, 0x2e, 0x50, 0x52, 0xc3, 0x28, 0xe5, 0xb2, 0x76, 0x56, 0x92, 0xca, 0x01, 0x46, 0xea,
0x6a, 0x5a, 0xa9, 0x6b, 0x1d, 0x9a, 0x11, 0xb9, 0xab, 0xec, 0xa8, 0xe5, 0x22, 0x78, 0x0f, 0xab,
0x95, 0xc9, 0xe8, 0xd2, 0xa5, 0xf0, 0x0d, 0x4a, 0x41, 0xd2, 0x46, 0x54, 0x24, 0x9e, 0x6b, 0x46,
0x05, 0x76, 0xf0, 0x3d, 0xe3, 0xe3, 0xc3, 0xbe, 0x9a, 0xf2, 0x0a, 0x5d, 0xb2, 0x8a, 0xe8, 0x2c,
0x56, 0x29, 0x9b, 0x9e, 0x51, 0xb1, 0xd4, 0x3a, 0x1f, 0x86, 0xb2, 0xdb, 0x5e, 0x66, 0xf9, 0xba,
0xe8, 0xb1, 0xeb, 0xc6, 0x0c, 0x30, 0xf8, 0xa1, 0xf1, 0xc1, 0x40, 0x9e, 0xaf, 0x9a, 0x86, 0x5d,
0x4b, 0xaa, 0x76, 0x67, 0xe2, 0x94, 0x11, 0xb9, 0xc4, 0xef, 0x40, 0xfd, 0x64, 0x24, 0x94, 0x42,
0x4b, 0x9f, 0x06, 0x2c, 0xf2, 0x19, 0x62, 0x06, 0x99, 0x1c, 0x35, 0xd2, 0x6b, 0x2a, 0xc2, 0x9e,
0xe0, 0xf2, 0x6d, 0x58, 0x8d, 0x84, 0x21, 0x4e, 0x95, 0x4d, 0xda, 0xcc, 0x05, 0x07, 0xbf, 0xf4,
0xc0, 0xdf, 0xc7, 0x53, 0xde, 0x14, 0x82, 0x67, 0xc7, 0x69, 0x18, 0x8b, 0x53, 0x9e, 0xa2, 0x25,
0x84, 0x08, 0xb8, 0x7f, 0xc1, 0x07, 0xba, 0xf4, 0xce, 0x01, 0x98, 0x06, 0x69, 0x71, 0x74, 0x39,
0x3e, 0x49, 0x46, 0xca, 0xac, 0x4c, 0x10, 0xda, 0x4a, 0x38, 0xce, 0x0d, 0xac, 0xce, 0xd4, 0x0a,
0xe1, 0x59, 0x62, 0x24, 0x25, 0xb5, 0x42, 0x05, 0xc6, 0xda, 0x03, 0x3b, 0x8c, 0x9e, 0x83, 0xdf,
0xb4, 0x8c, 0xc1, 0xbd, 0x12, 0xc6, 0xeb, 0xd8, 0xa3, 0xa3, 0xe8, 0x94, 0x30, 0x9e, 0xab, 0x16,
0xac, 0xc4, 0xa6, 0x98, 0x48, 0x6b, 0xff, 0x55, 0xdd, 0x2c, 0x94, 0xa7, 0x59, 0xae, 0xc0, 0x31,
0x50, 0x13, 0xae, 0xff, 0x35, 0xe8, 0x86, 0xa6, 0x54, 0x54, 0xcb, 0xae, 0x23, 0x36, 0x49, 0x4c,
0xe8, 0x97, 0xfd, 0x05, 0x66, 0x63, 0xe7, 0xdb, 0xbf, 0x1d, 0x65, 0xe7, 0xc3, 0x34, 0x7c, 0x4c,
0xcc, 0xb9, 0xdb, 0xf5, 0xcb, 0x7c, 0xbb, 0x06, 0xf8, 0xaf, 0x42, 0x3b, 0xd3, 0x17, 0xb7, 0xe6,
0x5f, 0x9c, 0x23, 0xe2, 0xa6, 0xc7, 0xfa, 0xba, 0xc5, 0xf9, 0xd7, 0xe5, 0x88, 0xfe, 0x7d, 0x58,
0xd1, 0x07, 0x1c, 0x27, 0xa4, 0xf1, 0xb6, 0x25, 0x25, 0xfb, 0x3e, 0x89, 0xd2, 0x5f, 0x60, 0xce,
0x26, 0xff, 0xab, 0x00, 0x71, 0x3e, 0x57, 0xa5, 0x02, 0x72, 0xde, 0xe4, 0xb4, 0xbf, 0xc0, 0x0c,
0x74, 0xff, 0x2d, 0x58, 0x8d, 0xed, 0x19, 0x8b, 0xca, 0xa7, 0x73, 0xa6, 0x30, 0xfd, 0x05, 0xe6,
0x6e, 0xf2, 0xf7, 0x60, 0x55, 0xe8, 0x60, 0xa3, 0xce, 0x91, 0x79, 0xd6, 0x6c, 0xef, 0x8c, 0xb7,
0x78, 0x86, 0xb3, 0xc1, 0x7f, 0x07, 0xfc, 0x41, 0xc9, 0x25, 0x54, 0xfe, 0xd5, 0x0c, 0x95, 0x7d,
0xa6, 0xbf, 0xc0, 0x2a, 0xb6, 0xf9, 0x5f, 0x87, 0xee, 0xc4, 0x6c, 0xad, 0x7a, 0xdd, 0x52, 0x9b,
0x66, 0x0e, 0x30, 0xd0, 0x0e, 0x2c, 0x7c, 0xa3, 0xde, 0x68, 0x62, 0xbd, 0x51, 0xa4, 0xf7, 0x4f,
0x3c, 0xd8, 0x30, 0x3a, 0x52, 0xc3, 0xfc, 0x67, 0x8d, 0xb7, 0x8c, 0xc2, 0xf2, 0x7a, 0x71, 0xe4,
0x15, 0x6b, 0xbc, 0x55, 0x72, 0x36, 0xeb, 0xc3, 0xa1, 0xcc, 0x65, 0xaf, 0xbb, 0x03, 0xae, 0xf9,
0x9b, 0xf2, 0x7c, 0xf6, 0x8e, 0x35, 0x9f, 0x2f, 0x7c, 0xf2, 0xf3, 0x84, 0xbf, 0xe0, 0x47, 0x0d,
0x4c, 0x3e, 0xf6, 0x69, 0x54, 0x69, 0xd8, 0xa5, 0x82, 0x57, 0x2a, 0x15, 0xb6, 0x60, 0x89, 0x56,
0x52, 0x8c, 0x4a, 0xe8, 0x26, 0xc8, 0x7f, 0x11, 0x56, 0xb0, 0x3c, 0x38, 0x0a, 0xc7, 0x5c, 0x21,
0xc9, 0x0c, 0xea, 0x40, 0x8b, 0xda, 0xb1, 0x51, 0xdd, 0xfd, 0x35, 0xdd, 0x9e, 0xb9, 0xe8, 0xcb,
0x5a, 0xf3, 0xfa, 0xb2, 0xc5, 0x39, 0x7d, 0x59, 0xdb, 0xe9, 0xcb, 0xac, 0x7e, 0xb1, 0xe3, 0xf6,
0x8b, 0x46, 0xd7, 0x06, 0x57, 0x74, 0x6d, 0x4b, 0xd7, 0xe9, 0xda, 0x96, 0x2b, 0xba, 0xb6, 0x52,
0x4f, 0xdd, 0xbd, 0x66, 0x4f, 0xbd, 0x52, 0xdd, 0x53, 0x6f, 0xc3, 0x2a, 0x7d, 0xe9, 0xbc, 0x5f,
0xb4, 0x2f, 0xab, 0x12, 0xd3, 0x01, 0x07, 0xdf, 0x2f, 0xfb, 0x06, 0xe3, 0x83, 0x24, 0x1d, 0x7e,
0x51, 0xbe, 0x11, 0xfc, 0x1f, 0x2c, 0xe5, 0xaf, 0x8f, 0x2f, 0x28, 0xb3, 0x5d, 0xe4, 0x73, 0x03,
0xcc, 0x6c, 0xb4, 0x92, 0xd3, 0xce, 0x62, 0x74, 0x7b, 0x8c, 0x76, 0xe0, 0x4e, 0x08, 0xae, 0xf3,
0x15, 0x3a, 0xf8, 0x43, 0x0d, 0xd6, 0xac, 0xb9, 0xe9, 0xff, 0x96, 0x45, 0x77, 0x3e, 0xaf, 0x45,
0x77, 0x0c, 0x8b, 0xae, 0xd0, 0x7f, 0xa7, 0x5a, 0xff, 0x6f, 0xc3, 0x53, 0x96, 0xb0, 0x48, 0xee,
0x18, 0xd0, 0x5a, 0x44, 0xb7, 0x3b, 0x2d, 0x2a, 0x09, 0x96, 0x29, 0x3c, 0x19, 0x98, 0x5c, 0xfd,
0x21, 0x0f, 0xd5, 0xda, 0x2b, 0x4d, 0xbf, 0xac, 0x1f, 0x5e, 0xfe, 0x56, 0x83, 0x95, 0xa2, 0xa4,
0xc1, 0x3c, 0x81, 0xe6, 0x88, 0x8d, 0xb9, 0x36, 0x47, 0x7c, 0xa6, 0x90, 0x9f, 0xe8, 0x6a, 0x3d,
0x4b, 0x50, 0xc9, 0x51, 0x9e, 0xba, 0x49, 0x3d, 0x6d, 0x66, 0x40, 0x0c, 0xdb, 0x6b, 0x98, 0xb6,
0x67, 0x54, 0x61, 0x4d, 0xab, 0x0a, 0xf3, 0xa1, 0x81, 0xed, 0xbe, 0xd2, 0x0b, 0x3d, 0x53, 0xe7,
0x20, 0xcb, 0x39, 0xf9, 0xf5, 0x4b, 0xad, 0x90, 0x21, 0xc9, 0xf8, 0xe5, 0x84, 0x93, 0x3e, 0xba,
0xac, 0x00, 0x18, 0xea, 0x07, 0x4b, 0xfd, 0xf4, 0x77, 0x01, 0x9a, 0x0d, 0xca, 0x52, 0x69, 0xea,
0x26, 0x61, 0x94, 0xe0, 0xf4, 0xdd, 0x3c, 0x4c, 0x43, 0x85, 0xb5, 0x21, 0xc7, 0x11, 0x05, 0x04,
0x03, 0x95, 0x98, 0x0e, 0x06, 0x5c, 0x88, 0xde, 0xd3, 0xc4, 0xba, 0x5e, 0x06, 0x7f, 0xf7, 0xe4,
0xb4, 0x97, 0x86, 0x0f, 0xf7, 0x4e, 0x28, 0x52, 0xcc, 0x9c, 0x4b, 0x9a, 0x93, 0xc5, 0x9a, 0xf3,
0x5b, 0xcd, 0x55, 0x53, 0xc9, 0x17, 0x61, 0x65, 0x12, 0x62, 0x9e, 0x3a, 0x34, 0x67, 0x93, 0xcb,
0xcc, 0x81, 0x5e, 0x31, 0x97, 0x7f, 0x01, 0xea, 0xd9, 0x85, 0xfc, 0x9b, 0x65, 0x69, 0xd7, 0x57,
0x96, 0x77, 0x5c, 0xfc, 0x83, 0xc5, 0xf0, 0x75, 0xf0, 0x17, 0xf5, 0xcf, 0x81, 0xc9, 0x14, 0x35,
0x39, 0xd7, 0x65, 0xac, 0xf3, 0xc4, 0x8c, 0x75, 0x3e, 0x23, 0x63, 0x37, 0x0a, 0xc6, 0x3a, 0x92,
0x89, 0x44, 0xb6, 0x52, 0x7b, 0x23, 0x71, 0x14, 0x9d, 0xc5, 0x47, 0xd3, 0xb1, 0xfe, 0xa7, 0x6b,
0x16, 0x13, 0x79, 0x47, 0x56, 0x33, 0xff, 0xca, 0xf0, 0xa1, 0x31, 0x16, 0x67, 0xb2, 0x4d, 0x5b,
0x66, 0xf4, 0x8c, 0x98, 0xd8, 0xdf, 0x89, 0x5e, 0x83, 0x80, 0x72, 0x11, 0x7c, 0x17, 0x9e, 0xa9,
0xbc, 0xf0, 0xe8, 0x3c, 0x79, 0xfc, 0x04, 0x97, 0x76, 0xe4, 0xa5, 0xc1, 0x89, 0x1e, 0x3d, 0xeb,
0xe3, 0x49, 0x23, 0xaf, 0x41, 0x23, 0x2a, 0xda, 0xd8, 0x2d, 0x6b, 0xf2, 0x5c, 0x41, 0x07, 0x23,
0x6c, 0xd9, 0x03, 0x4d, 0xa2, 0x81, 0xbe, 0x56, 0xad, 0x02, 0x06, 0x2b, 0x0f, 0x78, 0x38, 0xe4,
0xe9, 0xd1, 0x65, 0x3c, 0xd0, 0x43, 0xaa, 0x83, 0x7b, 0x7a, 0x30, 0x72, 0x70, 0x0f, 0x3d, 0xe1,
0x24, 0x14, 0xfc, 0x60, 0x78, 0xa1, 0x02, 0xb9, 0x5e, 0xe2, 0x99, 0xc9, 0xe9, 0xa9, 0xe0, 0x3a,
0x78, 0xab, 0x55, 0xf0, 0x33, 0x0f, 0xba, 0x48, 0xcf, 0xc3, 0xdd, 0x87, 0x47, 0xd3, 0x93, 0x43,
0x71, 0xa6, 0xca, 0x49, 0x4f, 0x97, 0x93, 0xfe, 0x2b, 0xd0, 0x1e, 0xa8, 0xe1, 0xa9, 0xaa, 0xb8,
0x2b, 0x2c, 0x13, 0xdb, 0x05, 0x8d, 0xe5, 0xdf, 0x85, 0x45, 0x71, 0x19, 0x0f, 0x0e, 0xc5, 0x99,
0x33, 0xc2, 0xb2, 0xa9, 0xef, 0x2f, 0x30, 0x8d, 0x57, 0xd4, 0xac, 0x1f, 0xc0, 0xca, 0xfd, 0x91,
0x9c, 0x27, 0xa8, 0xb1, 0xfb, 0x26, 0xb4, 0x23, 0x21, 0x77, 0x12, 0x55, 0x6d, 0x96, 0xaf, 0xfd,
0x97, 0xa1, 0x35, 0x92, 0x6f, 0x6a, 0x73, 0x2e, 0x62, 0x0a, 0x29, 0x78, 0x1e, 0x3a, 0x7b, 0xfa,
0x53, 0x25, 0xda, 0xe4, 0x87, 0xfc, 0x52, 0x09, 0x0f, 0x1f, 0x77, 0xdf, 0x80, 0x4e, 0xfe, 0x23,
0xa4, 0x7f, 0x1b, 0x5a, 0x07, 0x02, 0x4f, 0xf0, 0xbb, 0x79, 0x0a, 0x78, 0xf4, 0x6e, 0x34, 0xda,
0x5c, 0x53, 0xcb, 0x03, 0xb1, 0x1f, 0x4e, 0xcf, 0xce, 0xb3, 0xf7, 0x27, 0xc1, 0xc2, 0x49, 0x8b,
0xfe, 0x7e, 0x7c, 0xf5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x27, 0x7c, 0x4a, 0x4a, 0x29,
0x00, 0x00,
// 2966 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x1a, 0x4d, 0x6f, 0x24, 0x47,
0xd5, 0x3d, 0x5f, 0xf6, 0x3c, 0x7b, 0xec, 0xdd, 0xce, 0xae, 0x33, 0x71, 0x92, 0x95, 0x55, 0x0a,
0x91, 0x21, 0x9b, 0xdd, 0xac, 0x13, 0x82, 0x22, 0x14, 0x41, 0xec, 0xdd, 0x64, 0xac, 0xac, 0xc3,
0xa6, 0xec, 0x00, 0x52, 0x04, 0xa2, 0x3d, 0x53, 0xb6, 0x5b, 0x99, 0xe9, 0x9e, 0x9d, 0xea, 0xc9,
0xda, 0x08, 0x29, 0x1c, 0x80, 0x1b, 0x12, 0x17, 0x24, 0x40, 0x82, 0x0b, 0xdc, 0x90, 0x38, 0x71,
0xe6, 0x80, 0xc4, 0x25, 0xe2, 0x12, 0x8e, 0xdc, 0xb8, 0x21, 0x71, 0xe4, 0x0f, 0xa0, 0xf7, 0xaa,
0xaa, 0xbb, 0xaa, 0xba, 0x67, 0xec, 0xec, 0xe6, 0xc2, 0xad, 0xeb, 0xf5, 0xab, 0xaa, 0xf7, 0xfd,
0xd5, 0x0d, 0x6b, 0xe3, 0x68, 0x12, 0xf5, 0x27, 0xa9, 0x94, 0xb7, 0xc6, 0x93, 0x34, 0x4b, 0xc3,
0x66, 0x76, 0x3e, 0x16, 0x72, 0xe3, 0x6a, 0x36, 0x89, 0x12, 0x19, 0xf5, 0xb3, 0x38, 0x4d, 0xd4,
0x9b, 0x8d, 0x95, 0x7e, 0x3a, 0x1a, 0xe5, 0xab, 0x2b, 0x47, 0xc3, 0xb4, 0xff, 0x51, 0xff, 0x34,
0x8a, 0x35, 0x84, 0xdd, 0x87, 0xf5, 0x07, 0xe6, 0xb0, 0x83, 0x2c, 0xca, 0xa6, 0xf2, 0xae, 0xc8,
0xa2, 0x78, 0x28, 0xc3, 0x6b, 0xd0, 0x8c, 0x06, 0x83, 0x89, 0xec, 0x06, 0x9b, 0xf5, 0xad, 0x36,
0x57, 0x8b, 0xf0, 0x39, 0x68, 0xd3, 0x19, 0xbd, 0x48, 0x9e, 0x76, 0x6b, 0x9b, 0xf5, 0xad, 0x15,
0x5e, 0x00, 0xd8, 0x87, 0xf0, 0xac, 0x77, 0xda, 0x0e, 0xbe, 0x33, 0x47, 0xde, 0x00, 0xc8, 0x71,
0xd5, 0xb9, 0x2b, 0xdc, 0x82, 0xe0, 0xe1, 0xd9, 0x19, 0x17, 0x72, 0x3a, 0xcc, 0xa4, 0x39, 0x3c,
0x07, 0xb0, 0xdf, 0xd4, 0xe0, 0x7a, 0x7e, 0x7a, 0x4f, 0xc4, 0x27, 0xa7, 0x99, 0xba, 0x23, 0x5c,
0x87, 0x96, 0xa4, 0xa7, 0x6e, 0xb0, 0x19, 0x6c, 0x35, 0xb9, 0x5e, 0x21, 0x0b, 0x59, 0x9c, 0x0d,
0x45, 0xb7, 0xb6, 0x19, 0x20, 0x0b, 0xb4, 0x40, 0xec, 0x53, 0xda, 0xdd, 0xad, 0x6f, 0x06, 0x5b,
0x75, 0xae, 0x57, 0xe1, 0xd7, 0x60, 0x71, 0xa0, 0x08, 0xed, 0x36, 0x36, 0x83, 0xad, 0xe5, 0xed,
0xe7, 0x6f, 0x91, 0x58, 0x6f, 0x55, 0x0b, 0x88, 0x1b, 0x6c, 0x64, 0x6b, 0x14, 0xc5, 0x89, 0x22,
0xa9, 0xdb, 0xa4, 0x43, 0x2d, 0x48, 0xb8, 0x01, 0x4b, 0xb4, 0x42, 0x91, 0xb5, 0x36, 0x83, 0xad,
0x15, 0x9e, 0xaf, 0xc3, 0xb7, 0x61, 0xe5, 0xc8, 0x12, 0x51, 0x77, 0x91, 0x6e, 0x66, 0xd5, 0x37,
0xdb, 0xc2, 0xe4, 0xce, 0x3e, 0xf6, 0xef, 0x00, 0xba, 0x95, 0xc2, 0xe1, 0x72, 0xfc, 0x05, 0xc9,
0xc7, 0x65, 0xb3, 0x31, 0x97, 0xcd, 0x26, 0x1d, 0x58, 0xb0, 0xb9, 0x09, 0xcb, 0x68, 0x88, 0x71,
0xf6, 0x16, 0x99, 0x54, 0x8b, 0x4c, 0xca, 0x06, 0x85, 0x5b, 0xb0, 0xa6, 0x96, 0x3b, 0xb9, 0x79,
0x2d, 0x12, 0x96, 0x0f, 0x66, 0xbf, 0x0e, 0x60, 0xcd, 0x13, 0x4c, 0xc1, 0x49, 0x50, 0xcd, 0x49,
0xcd, 0xe1, 0xc4, 0x31, 0xe2, 0x3a, 0x69, 0xa4, 0x00, 0x7c, 0x6e, 0x3e, 0x2d, 0x75, 0xb2, 0x3f,
0xd8, 0x6a, 0xd8, 0x4d, 0x13, 0x29, 0x12, 0x39, 0x9d, 0x4f, 0x24, 0x8a, 0xe6, 0xb4, 0xb8, 0x4f,
0x51, 0x6a, 0x83, 0xc2, 0x17, 0xa0, 0xd3, 0x57, 0x47, 0xf5, 0x6c, 0xbd, 0xb8, 0xc0, 0xf0, 0x2b,
0x70, 0x45, 0x03, 0x0a, 0x09, 0x36, 0xe8, 0xa2, 0x12, 0x9c, 0xfd, 0x39, 0x80, 0x10, 0xc9, 0x7c,
0x2f, 0x1d, 0x08, 0x14, 0xff, 0x6e, 0x9a, 0x1c, 0xc7, 0x27, 0x33, 0x08, 0x5c, 0x85, 0x5a, 0x3a,
0x26, 0xba, 0x3a, 0xbc, 0x96, 0x8e, 0x71, 0x1d, 0x0f, 0x88, 0x86, 0x36, 0xaf, 0xc5, 0x83, 0x30,
0x84, 0x06, 0xc6, 0x06, 0x7d, 0x19, 0x3d, 0xe3, 0x49, 0x1f, 0x47, 0xc3, 0xa9, 0x20, 0x01, 0x75,
0xb8, 0x5a, 0x28, 0x2b, 0x88, 0x13, 0xf9, 0xf6, 0x24, 0xfd, 0xa1, 0x48, 0xc8, 0x17, 0x90, 0xd5,
0x02, 0xa4, 0x34, 0x23, 0x1f, 0x4c, 0x8f, 0xde, 0x15, 0xe7, 0xe4, 0x0b, 0x6d, 0x5e, 0x00, 0xd8,
0x37, 0x0b, 0xaa, 0xbf, 0x9d, 0x66, 0x42, 0xd9, 0xfe, 0x8c, 0x40, 0x85, 0x14, 0xa4, 0x99, 0x50,
0x71, 0xa4, 0xcd, 0xd5, 0x82, 0xfd, 0x29, 0x80, 0x6b, 0x36, 0xe3, 0x7b, 0x03, 0xad, 0x1b, 0xc3,
0x44, 0x60, 0x31, 0x71, 0x03, 0x60, 0x3c, 0x49, 0xc7, 0xa9, 0x8c, 0x86, 0x7b, 0x03, 0xed, 0x23,
0x16, 0x04, 0xcd, 0xeb, 0xe1, 0x34, 0xce, 0xf6, 0x8c, 0x30, 0xf4, 0xca, 0x72, 0xb7, 0x46, 0xb5,
0xbb, 0x35, 0x6d, 0xf1, 0x3a, 0x2c, 0xb7, 0x7c, 0x96, 0x7f, 0x59, 0x83, 0x2b, 0x86, 0xe0, 0x9c,
0x58, 0xa5, 0x81, 0x20, 0xd7, 0x40, 0x71, 0x61, 0xad, 0xfa, 0xc2, 0xba, 0x7d, 0xe1, 0x0d, 0x80,
0x2c, 0x9a, 0x9c, 0x08, 0x72, 0x3c, 0xad, 0x35, 0x0b, 0xe2, 0x6b, 0xa9, 0x59, 0xd6, 0xd2, 0x6d,
0x23, 0xdb, 0x16, 0x45, 0xab, 0x67, 0xac, 0x68, 0xe5, 0xea, 0x46, 0x8b, 0x1d, 0x5d, 0xe6, 0x78,
0x92, 0x8e, 0xe8, 0x42, 0xa5, 0xd5, 0x7c, 0x6d, 0x39, 0xe9, 0x52, 0xd9, 0x49, 0x8d, 0x5c, 0xda,
0xbe, 0x5c, 0xfe, 0x12, 0xc0, 0x75, 0x2e, 0xfa, 0x22, 0x1e, 0x67, 0xe6, 0x5a, 0x6d, 0xc4, 0x55,
0x9a, 0xbc, 0x03, 0xad, 0x3e, 0xbd, 0x25, 0x01, 0x95, 0x29, 0x2e, 0x7c, 0x80, 0x6b, 0xc4, 0xf0,
0x25, 0x68, 0x8c, 0x27, 0xe2, 0x63, 0x12, 0xdd, 0xf2, 0xf6, 0xd3, 0xde, 0x06, 0xa3, 0x0a, 0x4e,
0x48, 0xe1, 0x1d, 0x58, 0xec, 0x4f, 0x27, 0x13, 0x91, 0x64, 0x3a, 0x75, 0xcc, 0xc4, 0x37, 0x78,
0xec, 0xf7, 0x01, 0x3c, 0xef, 0x31, 0x80, 0x54, 0x20, 0xda, 0x07, 0xe3, 0x41, 0x94, 0x09, 0x47,
0x68, 0x81, 0x27, 0xb4, 0xdb, 0x9a, 0x3a, 0xc5, 0xce, 0xb3, 0x15, 0xec, 0x78, 0x14, 0x7e, 0xb5,
0xa0, 0xb0, 0x7e, 0xf1, 0x9e, 0x9c, 0xca, 0xff, 0x06, 0xf0, 0xb4, 0x47, 0x25, 0x69, 0x37, 0x4d,
0x44, 0xc9, 0x0a, 0xab, 0xb3, 0x89, 0x6b, 0x6d, 0xf5, 0x92, 0xb5, 0xe1, 0xfb, 0x34, 0x8b, 0x86,
0x78, 0xb4, 0x71, 0x18, 0x0b, 0x42, 0x35, 0x01, 0xae, 0xf0, 0x5a, 0xb2, 0xc5, 0x26, 0x2f, 0x00,
0x14, 0x8b, 0x53, 0x99, 0xd1, 0xcb, 0x16, 0xbd, 0xcc, 0xd7, 0x61, 0x17, 0x16, 0xd1, 0xfa, 0xb8,
0xcc, 0xb4, 0xcd, 0x99, 0x25, 0xde, 0x39, 0x48, 0x13, 0xa1, 0x98, 0x25, 0xb3, 0x6b, 0x72, 0x0b,
0x82, 0xba, 0x79, 0xca, 0xb0, 0xfb, 0xce, 0x24, 0x9d, 0x8e, 0x9f, 0x28, 0x3e, 0xe6, 0xf1, 0x49,
0xb9, 0x9a, 0x8e, 0x4f, 0x17, 0x7b, 0x19, 0x55, 0x4b, 0xda, 0xde, 0xa5, 0x8e, 0x0c, 0x16, 0x84,
0xfd, 0xc7, 0xa7, 0xf2, 0x0b, 0x89, 0x0e, 0x9b, 0xb0, 0x5c, 0x68, 0xc7, 0xd0, 0x6c, 0x83, 0x2e,
0x41, 0xb9, 0x6d, 0xb9, 0xad, 0x99, 0xee, 0xbe, 0xe8, 0x57, 0x17, 0x16, 0xb7, 0x4b, 0x25, 0x6e,
0x3f, 0x0d, 0x60, 0xc3, 0xb3, 0x44, 0x5b, 0x35, 0x55, 0x5e, 0xbf, 0xed, 0x79, 0xfd, 0x86, 0x67,
0xf2, 0xd6, 0xfe, 0xdc, 0xed, 0x6f, 0x39, 0x6e, 0x5f, 0xb9, 0xc3, 0xf1, 0xab, 0xd7, 0x7c, 0xcf,
0x9f, 0xb7, 0x25, 0x77, 0xab, 0x9f, 0x05, 0x70, 0x8d, 0x8b, 0x87, 0x79, 0xa5, 0x40, 0x21, 0x22,
0x39, 0x4e, 0x67, 0x5b, 0x58, 0x6c, 0x12, 0x90, 0x9d, 0x71, 0xeb, 0x16, 0xb3, 0xb3, 0x92, 0x8e,
0x13, 0x46, 0x9b, 0x7e, 0x18, 0xdd, 0x85, 0x75, 0x2e, 0xe4, 0xd8, 0x21, 0x44, 0x69, 0xf9, 0xcb,
0x50, 0x8f, 0x07, 0x2a, 0xa7, 0xce, 0x09, 0x67, 0x88, 0xc3, 0xde, 0xc1, 0x18, 0xe1, 0x1d, 0x42,
0x6c, 0xcb, 0xf0, 0xa6, 0x7d, 0xca, 0x3c, 0xd1, 0xd0, 0x41, 0x63, 0x95, 0xeb, 0x76, 0xe2, 0x64,
0xb0, 0x1f, 0x27, 0x62, 0xb2, 0x3b, 0x1a, 0x90, 0x5d, 0xc4, 0xc9, 0xe0, 0x2d, 0x6a, 0x6a, 0x74,
0xfd, 0x6a, 0x41, 0x88, 0xbf, 0x38, 0x19, 0xec, 0xa2, 0xf9, 0xe9, 0xe2, 0xa9, 0x00, 0x14, 0xd1,
0x07, 0xef, 0x73, 0xa3, 0x0f, 0x42, 0xd8, 0xdf, 0x02, 0xb8, 0xea, 0x5c, 0x49, 0x5a, 0x98, 0x51,
0x0c, 0xe0, 0xb1, 0x07, 0xb6, 0x27, 0x59, 0x10, 0x97, 0x8e, 0xfa, 0x7c, 0x3a, 0x1a, 0x3e, 0x1d,
0x79, 0x45, 0x7a, 0x18, 0x8f, 0x84, 0xf6, 0xa8, 0x02, 0x80, 0x1e, 0xa7, 0xca, 0x53, 0xe5, 0x38,
0xba, 0x6e, 0xb2, 0x40, 0xec, 0x17, 0x01, 0x74, 0x2d, 0xef, 0xb8, 0x98, 0x9d, 0x9b, 0x4e, 0x02,
0xe9, 0x5a, 0x9a, 0x71, 0xf6, 0x6a, 0x2b, 0xdf, 0xf6, 0xb3, 0xc7, 0xec, 0x0d, 0xb9, 0x8d, 0xdf,
0x53, 0x55, 0x3a, 0xb2, 0x87, 0x18, 0xdf, 0x4a, 0x88, 0x4b, 0x39, 0x1d, 0x8b, 0x09, 0x09, 0x41,
0x51, 0x53, 0x00, 0xd0, 0xf6, 0x47, 0x78, 0x8c, 0xc9, 0x1f, 0xb4, 0x60, 0xdf, 0x2d, 0xea, 0x1f,
0x3c, 0xe6, 0x7e, 0x2c, 0xb3, 0x19, 0x5e, 0x72, 0x0b, 0x5a, 0xb4, 0x45, 0x95, 0x7c, 0xcb, 0xdb,
0xeb, 0x9e, 0xb9, 0x69, 0x2a, 0xb8, 0xc6, 0x62, 0x9f, 0x94, 0x12, 0xb0, 0xb9, 0x40, 0x27, 0x60,
0x53, 0x02, 0x04, 0x95, 0x29, 0xdd, 0x20, 0x97, 0x4b, 0x80, 0xda, 0x7c, 0xfc, 0x5c, 0x42, 0x8f,
0x30, 0x08, 0x28, 0xbf, 0x71, 0xd8, 0x7b, 0x09, 0x1a, 0xc3, 0x58, 0x66, 0x17, 0xde, 0x8b, 0x48,
0xa8, 0x1a, 0xd3, 0xb5, 0x2a, 0xb6, 0xe7, 0xa8, 0x46, 0x23, 0xb2, 0x9f, 0x1a, 0xab, 0x47, 0x0b,
0xda, 0xde, 0x8f, 0xe2, 0x64, 0x3f, 0x1a, 0x5b, 0x91, 0x39, 0x98, 0xdd, 0x2d, 0xd5, 0x4c, 0x04,
0xa9, 0xee, 0x96, 0xea, 0x73, 0xbb, 0xa5, 0x86, 0xdb, 0x15, 0xb2, 0xbb, 0xaa, 0x9e, 0x2f, 0xc8,
0x20, 0x73, 0xbd, 0x05, 0xcd, 0x38, 0x13, 0x23, 0x13, 0x35, 0x1c, 0x7e, 0x6c, 0x82, 0xb9, 0x42,
0x63, 0xff, 0xaa, 0xab, 0x3c, 0x98, 0xc7, 0x1e, 0xed, 0x91, 0x2f, 0x40, 0x07, 0x6f, 0x2a, 0xba,
0xa1, 0x80, 0x9a, 0x35, 0x17, 0x88, 0x7d, 0x67, 0x01, 0xb0, 0x5b, 0x30, 0x1f, 0x3c, 0x23, 0x5f,
0x16, 0x52, 0x6b, 0x38, 0x52, 0x63, 0xb0, 0x32, 0x9e, 0x88, 0xe2, 0x72, 0xd5, 0x29, 0x3a, 0x30,
0x57, 0xb2, 0x2d, 0xbf, 0x0f, 0x55, 0x27, 0x20, 0x33, 0x42, 0xb7, 0xc3, 0xe6, 0x84, 0x1c, 0x46,
0x1e, 0x95, 0x23, 0x2c, 0xa9, 0x13, 0x72, 0x00, 0xca, 0x3e, 0x3b, 0xdb, 0x4d, 0xa7, 0x49, 0x26,
0xa9, 0x82, 0xee, 0xf0, 0x7c, 0xad, 0xde, 0xa9, 0xd1, 0x4a, 0x17, 0x54, 0x17, 0x6b, 0xd6, 0x58,
0x39, 0x65, 0x67, 0x6a, 0x48, 0xb3, 0x4c, 0x53, 0x18, 0xb3, 0xa4, 0x56, 0x14, 0xc5, 0x7c, 0x68,
0xb6, 0xae, 0x28, 0x99, 0x3a, 0x40, 0xa4, 0x5c, 0x03, 0xd4, 0x21, 0x1d, 0x3a, 0xc4, 0x81, 0x85,
0x37, 0xe1, 0x6a, 0x92, 0x26, 0xbb, 0xd4, 0xdb, 0x1f, 0x1a, 0x22, 0x57, 0x89, 0xc8, 0xf2, 0x0b,
0xb6, 0x03, 0x57, 0x0f, 0xc4, 0xf0, 0x58, 0x77, 0xd4, 0x07, 0x59, 0x74, 0x22, 0x64, 0xf8, 0xb2,
0x6b, 0x28, 0xc6, 0x51, 0x7c, 0x44, 0x63, 0x27, 0xf7, 0xe1, 0x8a, 0xff, 0x0a, 0x23, 0xab, 0xcc,
0xa2, 0x49, 0xd6, 0xb3, 0x0d, 0xdf, 0x06, 0xa1, 0x7e, 0x45, 0x12, 0x1d, 0xe9, 0xb2, 0xb6, 0xc3,
0xf5, 0x8a, 0xfd, 0x33, 0x80, 0x6b, 0xfe, 0x71, 0x64, 0xbe, 0xf3, 0xcb, 0xaf, 0x4e, 0x9e, 0x98,
0x5f, 0x86, 0xa6, 0xc4, 0x4d, 0x5e, 0x87, 0x51, 0xa6, 0x9e, 0xb0, 0x9c, 0x9a, 0xaa, 0xe1, 0xd5,
0x54, 0x37, 0x00, 0xc4, 0x99, 0xe8, 0xbb, 0x03, 0xa8, 0x02, 0xf2, 0xb9, 0xfb, 0x35, 0x26, 0x60,
0xfd, 0x7e, 0xda, 0x8f, 0x86, 0x86, 0x98, 0x82, 0xbb, 0x3b, 0x86, 0xea, 0xc0, 0xe9, 0x22, 0xaa,
0x24, 0x61, 0x28, 0x27, 0x6b, 0xda, 0x4b, 0x06, 0xe2, 0x4c, 0x47, 0x0f, 0xb3, 0x64, 0xaf, 0xc3,
0xaa, 0x2a, 0xbf, 0x90, 0x82, 0x4a, 0xe1, 0xe5, 0x73, 0x84, 0x9a, 0x35, 0x47, 0x60, 0x0c, 0xae,
0xa8, 0x7d, 0xbb, 0x51, 0xd2, 0x17, 0xc3, 0xaa, 0x9d, 0xec, 0x33, 0x3d, 0x25, 0x22, 0x72, 0x2e,
0xaa, 0xdf, 0xb3, 0x73, 0x53, 0xbf, 0x67, 0xe7, 0x28, 0x2d, 0xc5, 0x22, 0xcc, 0x55, 0x4c, 0x6f,
0xc1, 0x30, 0xf8, 0x12, 0x34, 0x50, 0x6c, 0xdd, 0x65, 0xc2, 0xbf, 0xae, 0xf1, 0x5d, 0xce, 0x7a,
0x0b, 0x9c, 0x90, 0xa8, 0x15, 0x25, 0xaa, 0xc9, 0x75, 0x8a, 0xe3, 0x7d, 0x86, 0x7a, 0x0b, 0x5c,
0x23, 0xee, 0x2c, 0x6a, 0x21, 0xb0, 0x9f, 0x14, 0x35, 0xb0, 0xa3, 0x19, 0xcd, 0xde, 0x6d, 0x27,
0x5f, 0xcd, 0x55, 0x4d, 0xa9, 0x29, 0xac, 0x5d, 0xbc, 0x27, 0xcf, 0x5b, 0x9f, 0x05, 0xf0, 0x5c,
0x15, 0x19, 0x33, 0x3b, 0xc3, 0xdc, 0xd4, 0x6b, 0x97, 0x32, 0x75, 0xb7, 0x25, 0xac, 0xcf, 0x6f,
0x09, 0x1b, 0xf3, 0x5a, 0xc2, 0xe6, 0xec, 0x96, 0xb0, 0xe5, 0xb4, 0x84, 0xec, 0x13, 0x78, 0xb6,
0x8a, 0x25, 0xa9, 0x4b, 0x81, 0x9b, 0x8e, 0x68, 0xbb, 0x33, 0x18, 0x90, 0xe5, 0x72, 0xa9, 0x76,
0xc1, 0x86, 0x5c, 0xa8, 0xbf, 0x0b, 0x20, 0xe4, 0xe2, 0xe1, 0xfb, 0x53, 0x31, 0x39, 0x47, 0x34,
0x1d, 0xe3, 0xdc, 0xd1, 0x6d, 0x11, 0x3d, 0xfc, 0x96, 0xe0, 0x1a, 0x34, 0xfb, 0x18, 0x2a, 0xb5,
0xb8, 0xd4, 0x02, 0x25, 0x35, 0x88, 0x27, 0x42, 0xd5, 0xce, 0x5a, 0x52, 0x39, 0xc0, 0x4a, 0x5d,
0x4d, 0x27, 0x75, 0x5d, 0x83, 0x66, 0x4c, 0xee, 0xaa, 0x3a, 0x6a, 0xb5, 0x60, 0xef, 0x63, 0xb5,
0x32, 0x1e, 0x9e, 0xfb, 0x14, 0xbe, 0x41, 0x29, 0x48, 0xd9, 0x88, 0x8e, 0xc4, 0x73, 0xcd, 0xa8,
0xc0, 0x66, 0xdf, 0xb7, 0x3e, 0x3e, 0xec, 0xea, 0x29, 0xaf, 0x34, 0x25, 0xab, 0x8c, 0x4f, 0x12,
0x9d, 0xb2, 0xe9, 0x19, 0x15, 0x4b, 0xad, 0xf3, 0x7e, 0xa4, 0xba, 0xed, 0x15, 0x9e, 0xaf, 0x8b,
0x1e, 0xbb, 0x6e, 0xcd, 0x00, 0xd9, 0x8f, 0xac, 0x0f, 0x06, 0xea, 0x7c, 0xdd, 0x34, 0x6c, 0x3b,
0x52, 0x75, 0x3b, 0x13, 0xaf, 0x8c, 0xc8, 0x25, 0x7e, 0x1b, 0xea, 0x47, 0x43, 0xa9, 0x15, 0x5a,
0xfa, 0x34, 0xe0, 0x90, 0xcf, 0x11, 0x93, 0x65, 0x6a, 0xd4, 0x48, 0xaf, 0xa9, 0x08, 0x7b, 0x82,
0xcb, 0xb7, 0x60, 0x2d, 0x96, 0x96, 0x38, 0x75, 0x36, 0x59, 0xe2, 0x3e, 0x98, 0xbd, 0xa9, 0xc2,
0x1e, 0x5d, 0xc8, 0xc5, 0xa3, 0x68, 0x32, 0xa8, 0xac, 0xff, 0xd7, 0xa1, 0x15, 0x8d, 0xc8, 0x60,
0xf4, 0x68, 0x5c, 0xad, 0xd8, 0xaf, 0x02, 0x08, 0x77, 0x91, 0x88, 0xb7, 0xa4, 0x14, 0xd9, 0xe1,
0x24, 0x4a, 0xe4, 0xb1, 0x98, 0xa0, 0x21, 0x45, 0x08, 0xb8, 0x77, 0x26, 0xfa, 0xa6, 0x72, 0xcf,
0x01, 0x98, 0x45, 0x69, 0x71, 0x70, 0x3e, 0x3a, 0x4a, 0x87, 0xda, 0x2a, 0x6d, 0x90, 0x75, 0x5d,
0xdd, 0xbe, 0x0e, 0xe1, 0x59, 0x6a, 0xe5, 0x34, 0xbd, 0x42, 0x92, 0x13, 0xe3, 0xc0, 0x6d, 0x4e,
0xcf, 0xec, 0xb7, 0x2d, 0x6b, 0xee, 0xaf, 0x65, 0xf9, 0x3a, 0xb6, 0xf8, 0x28, 0x79, 0x2d, 0xcb,
0xe7, 0xaa, 0xf5, 0xa2, 0xb0, 0x29, 0xa4, 0xd2, 0x3a, 0x7c, 0xd5, 0xf4, 0x1a, 0xe5, 0x61, 0x98,
0xaf, 0x2f, 0x8c, 0xf3, 0x84, 0x1b, 0xbe, 0x09, 0x9d, 0xc8, 0x96, 0x8a, 0xee, 0xf8, 0x4d, 0xc0,
0x27, 0x89, 0x49, 0xf3, 0xb2, 0xb7, 0xc0, 0x5d, 0xec, 0x7c, 0xfb, 0x77, 0xe2, 0xec, 0x74, 0x30,
0x89, 0x1e, 0x11, 0x73, 0xfe, 0x76, 0xf3, 0x32, 0xdf, 0x6e, 0x00, 0xe1, 0xab, 0xb0, 0x94, 0x99,
0x8b, 0x5b, 0xf3, 0x2f, 0xce, 0x11, 0x71, 0xd3, 0x23, 0x73, 0xdd, 0xe2, 0xfc, 0xeb, 0x72, 0xc4,
0xf0, 0x1e, 0xac, 0x9a, 0x03, 0x0e, 0x53, 0xd2, 0xf8, 0x92, 0x23, 0x25, 0xf7, 0x3e, 0x85, 0xd2,
0x5b, 0xe0, 0xde, 0xa6, 0xf0, 0xeb, 0x00, 0x49, 0x3e, 0x96, 0xa5, 0xfa, 0x73, 0xde, 0xe0, 0xb5,
0xb7, 0xc0, 0x2d, 0xf4, 0xf0, 0x6d, 0x58, 0x4b, 0xdc, 0x11, 0x8d, 0x4e, 0xc7, 0x73, 0x86, 0x38,
0xbd, 0x05, 0xee, 0x6f, 0x0a, 0x77, 0x60, 0x4d, 0x9a, 0x58, 0xa5, 0xcf, 0x51, 0x69, 0xda, 0xee,
0x0e, 0xad, 0xb7, 0x78, 0x86, 0xb7, 0x21, 0x7c, 0x17, 0xc2, 0x7e, 0xc9, 0x25, 0x74, 0xfa, 0x36,
0x0c, 0x95, 0x7d, 0xa6, 0xb7, 0xc0, 0x2b, 0xb6, 0x85, 0xdf, 0x80, 0xce, 0xd8, 0xee, 0xcc, 0xba,
0x9d, 0x52, 0x97, 0x67, 0xcf, 0x3f, 0xd0, 0x0e, 0x1c, 0x7c, 0xab, 0x5c, 0x69, 0x62, 0xb9, 0x52,
0x54, 0x07, 0x9f, 0x06, 0xb0, 0x6e, 0x35, 0xb4, 0x96, 0xf9, 0xcf, 0x9a, 0x8e, 0x59, 0x75, 0xe9,
0xe5, 0xc2, 0xd0, 0x2b, 0xce, 0x74, 0xac, 0xe4, 0x6c, 0xce, 0x77, 0x47, 0x95, 0x0a, 0x5f, 0xf7,
0xe7, 0x63, 0xf3, 0x37, 0xe5, 0xe9, 0xf0, 0x5d, 0x67, 0xbc, 0x5f, 0xf8, 0xe4, 0xe3, 0x44, 0x4f,
0xf6, 0xe3, 0x06, 0xe6, 0x2e, 0xf7, 0x34, 0x2a, 0x54, 0xdc, 0x4a, 0x23, 0x28, 0x55, 0x1a, 0x9b,
0xb0, 0x4c, 0x2b, 0x25, 0x46, 0x2d, 0x74, 0x1b, 0x14, 0xbe, 0x08, 0xab, 0x58, 0x5d, 0x1c, 0x44,
0x23, 0xa1, 0x91, 0x54, 0x02, 0xf6, 0xa0, 0x45, 0xe9, 0xd9, 0xa8, 0x6e, 0x1e, 0x9b, 0x7e, 0xcb,
0x5d, 0xb4, 0x75, 0xad, 0x79, 0x6d, 0xdd, 0xe2, 0x9c, 0xb6, 0x6e, 0xc9, 0x6b, 0xeb, 0x9c, 0x76,
0xb3, 0xed, 0xb7, 0x9b, 0x56, 0xd3, 0x07, 0x17, 0x34, 0x7d, 0xcb, 0x97, 0x69, 0xfa, 0x56, 0x2a,
0x9a, 0xbe, 0x52, 0x4b, 0xde, 0xb9, 0x64, 0x4b, 0xbe, 0x5a, 0xdd, 0x92, 0x6f, 0xc1, 0x1a, 0x7d,
0x28, 0xbd, 0x57, 0x74, 0x3f, 0x6b, 0x0a, 0xd3, 0x03, 0xb3, 0x1f, 0x94, 0x7d, 0x83, 0x8b, 0x7e,
0x3a, 0x23, 0x3b, 0x3e, 0x86, 0x6f, 0xb0, 0x2f, 0xc1, 0x72, 0xfe, 0xfa, 0xf0, 0x8c, 0x32, 0xdb,
0x59, 0x3e, 0x76, 0xc0, 0xcc, 0x46, 0x2b, 0x35, 0x2c, 0x2d, 0x26, 0xbf, 0x87, 0x68, 0x07, 0xfe,
0x80, 0xe1, 0x32, 0x1f, 0xb1, 0xd9, 0x1f, 0x6b, 0x70, 0xd5, 0x19, 0xbb, 0xfe, 0x7f, 0x59, 0x74,
0xfb, 0x71, 0x2d, 0xba, 0x6d, 0x59, 0x74, 0x85, 0xfe, 0xdb, 0xd5, 0xfa, 0x7f, 0x07, 0x9e, 0x72,
0x84, 0x45, 0x72, 0xc7, 0x80, 0xd6, 0x22, 0xba, 0xfd, 0x61, 0x53, 0x49, 0xb0, 0x5c, 0xe3, 0xa9,
0xc0, 0xe4, 0xeb, 0x0f, 0x79, 0xa8, 0xd6, 0x5e, 0x69, 0x78, 0xe6, 0xfc, 0x2f, 0xf3, 0xf7, 0x1a,
0xac, 0x16, 0x25, 0x0d, 0xe6, 0x09, 0x34, 0x47, 0xec, 0xeb, 0x8d, 0x39, 0xe2, 0x33, 0x85, 0xfc,
0xd4, 0x14, 0xfb, 0x59, 0x8a, 0x4a, 0x8e, 0xf3, 0xd4, 0x4d, 0xea, 0x59, 0xe2, 0x16, 0xc4, 0xb2,
0xbd, 0x86, 0x6d, 0x7b, 0x56, 0x15, 0xd6, 0x74, 0xaa, 0xb0, 0x10, 0x1a, 0x02, 0xd3, 0xbc, 0xd2,
0x0b, 0x3d, 0x53, 0xe3, 0xa1, 0xca, 0x39, 0xf5, 0xf1, 0x4c, 0xaf, 0x90, 0x21, 0xc5, 0xf8, 0xf9,
0x58, 0x90, 0x3e, 0x3a, 0xbc, 0x00, 0x58, 0xea, 0x07, 0x47, 0xfd, 0xf4, 0x73, 0x02, 0x9a, 0x0d,
0xca, 0x52, 0x6b, 0xea, 0x3a, 0x61, 0x94, 0xe0, 0xf4, 0xd9, 0x3d, 0x9a, 0x44, 0x1a, 0x6b, 0x5d,
0x4d, 0x33, 0x0a, 0x08, 0x06, 0x2a, 0x39, 0xed, 0xf7, 0x85, 0x94, 0xdd, 0xa7, 0x89, 0x75, 0xb3,
0x64, 0xff, 0x08, 0xd4, 0xb0, 0x98, 0x66, 0x17, 0x77, 0x8f, 0x28, 0x52, 0xcc, 0x1c, 0x6b, 0xda,
0x83, 0xc9, 0x9a, 0xf7, 0x57, 0xce, 0x45, 0x43, 0xcd, 0x17, 0x61, 0x75, 0x1c, 0x61, 0x9e, 0xda,
0xb7, 0x47, 0x9b, 0x2b, 0xdc, 0x83, 0x5e, 0x30, 0xd6, 0x7f, 0x01, 0xea, 0xd9, 0x99, 0xfa, 0x19,
0x66, 0x79, 0x3b, 0xd4, 0x96, 0x77, 0x58, 0xfc, 0xc2, 0xc5, 0xf1, 0x35, 0xfb, 0xab, 0xfe, 0x65,
0xc1, 0x66, 0x8a, 0x7a, 0xa4, 0xcb, 0x32, 0xd6, 0x7e, 0x62, 0xc6, 0xda, 0x9f, 0x93, 0xb1, 0x2b,
0x05, 0x63, 0x6d, 0xc5, 0x44, 0xaa, 0x3a, 0xb1, 0x9d, 0xa1, 0x3c, 0x88, 0x4f, 0x92, 0x83, 0xe9,
0xc8, 0xfc, 0x12, 0x36, 0x8b, 0x89, 0xbc, 0xa1, 0xab, 0xd9, 0x3f, 0x75, 0x84, 0xd0, 0x18, 0xc9,
0x13, 0xd5, 0xe5, 0xad, 0x70, 0x7a, 0x46, 0x4c, 0x6c, 0x0f, 0x65, 0xb7, 0x41, 0x40, 0xb5, 0x60,
0xdf, 0x83, 0x67, 0x2a, 0x2f, 0x3c, 0x38, 0x4d, 0x1f, 0x3d, 0xc1, 0xa5, 0x6d, 0x75, 0x29, 0x3b,
0x32, 0x93, 0x6b, 0x73, 0x3c, 0x69, 0xe4, 0x35, 0x68, 0xc4, 0x45, 0x17, 0xbc, 0xe9, 0x0c, 0xae,
0x2b, 0xe8, 0xe0, 0x84, 0xad, 0x7a, 0xa0, 0x71, 0xdc, 0x37, 0xd7, 0xea, 0x15, 0xe3, 0xb0, 0x7a,
0x5f, 0x44, 0x03, 0x31, 0x39, 0x38, 0x4f, 0xfa, 0x66, 0xc6, 0xb5, 0x77, 0xd7, 0xcc, 0x55, 0xf6,
0xee, 0xa2, 0x27, 0x1c, 0x45, 0x52, 0xec, 0x0d, 0xce, 0x74, 0x20, 0x37, 0x4b, 0x3c, 0x33, 0x3d,
0x3e, 0x96, 0xc2, 0x04, 0x6f, 0xbd, 0x62, 0x3f, 0x0f, 0xa0, 0x83, 0xf4, 0x3c, 0xd8, 0x7e, 0x70,
0x30, 0x3d, 0xda, 0x97, 0x27, 0xba, 0x9c, 0x0c, 0x4c, 0x39, 0x19, 0xbe, 0x02, 0x4b, 0x7d, 0x3d,
0x7b, 0xd5, 0x15, 0x77, 0x85, 0x65, 0x62, 0xbb, 0x60, 0xb0, 0xc2, 0x3b, 0xb0, 0x28, 0xcf, 0x93,
0xfe, 0xbe, 0x3c, 0xf1, 0x26, 0x60, 0x2e, 0xf5, 0xbd, 0x05, 0x6e, 0xf0, 0x8a, 0x9a, 0xf5, 0x43,
0x58, 0xbd, 0x37, 0x54, 0xe3, 0x08, 0x3d, 0xb5, 0xdf, 0x80, 0xa5, 0x58, 0xaa, 0x9d, 0x44, 0xd5,
0x12, 0xcf, 0xd7, 0xe1, 0xcb, 0xd0, 0x1a, 0xaa, 0x37, 0xb5, 0x39, 0x17, 0x71, 0x8d, 0xc4, 0x9e,
0x87, 0xf6, 0x8e, 0xf9, 0xd2, 0x89, 0x36, 0xf9, 0x91, 0x38, 0xd7, 0xc2, 0xc3, 0xc7, 0xed, 0x37,
0xa0, 0x9d, 0xff, 0x47, 0x19, 0xde, 0x84, 0xd6, 0x9e, 0xc4, 0x13, 0xc2, 0x4e, 0x9e, 0x02, 0x1e,
0xbe, 0x17, 0x0f, 0x37, 0xae, 0xea, 0xe5, 0x9e, 0xdc, 0x8d, 0xa6, 0x27, 0xa7, 0xd9, 0x07, 0x63,
0xb6, 0x70, 0xd4, 0xa2, 0x9f, 0x27, 0x5f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x6a,
0x0d, 0x85, 0x89, 0x29, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
......
......@@ -28,6 +28,8 @@ var (
ForkParaSelfConsStages = "ForkParaSelfConsStages"
// ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚
ForkParaAssetTransferRbk = "ForkParaAssetTransferRbk"
// ForkParaFullMinerHeight 平行链全挖矿开启高度
ForkParaFullMinerHeight = "ForkParaFullMinerHeight"
// ParaConsSubConf sub
ParaConsSubConf = "consensus.sub.para"
......@@ -59,6 +61,7 @@ func InitFork(cfg *types.Chain33Config) {
//只在平行链启用
cfg.RegisterDappFork(ParaX, ForkParaSelfConsStages, types.MaxHeight)
cfg.RegisterDappFork(ParaX, ForkParaFullMinerHeight, types.MaxHeight)
}
//InitExecutor ...
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment