From c0f931d3cd9844a487ae08ed15f5c52896a9bb44 Mon Sep 17 00:00:00 2001 From: znn Date: Thu, 14 Apr 2022 20:35:24 +0100 Subject: [PATCH] v0.0.4 --- common/types/spork.go | 2 +- metadata/version.go | 2 +- metadata/version_libznn.go | 2 +- node/config.go | 2 +- p2p/config.go | 190 +++++------ vm/embedded/definition/plasma.go | 2 +- vm/embedded/embedded_test.go | 8 - vm/embedded/implementation/accelerator.go | 15 +- vm/embedded/implementation/liquidity.go | 6 +- vm/embedded/implementation/pillars.go | 2 +- vm/embedded/implementation/sentinel.go | 4 +- vm/embedded/implementation/spork.go | 7 +- vm/embedded/implementation/token.go | 4 +- vm/embedded/tests/accelerator_test.go | 382 +++++++++++++++++++++- 14 files changed, 507 insertions(+), 121 deletions(-) diff --git a/common/types/spork.go b/common/types/spork.go index 35e0803..a396361 100644 --- a/common/types/spork.go +++ b/common/types/spork.go @@ -1,7 +1,7 @@ package types var ( - AcceleratorSpork = NewImplementedSpork("97f0a9636a5cc633dfa3814e431f19c1974536eef3d1ebb713db50464dc5e750") + AcceleratorSpork = NewImplementedSpork("6d2b1e6cb4025f2f45533f0fe22e9b7ce2014d91cc960471045fa64eee5a6ba3") ImplementedSporksMap = map[Hash]bool{ AcceleratorSpork.SporkId: true, } diff --git a/metadata/version.go b/metadata/version.go index 595e2f3..3354bdb 100644 --- a/metadata/version.go +++ b/metadata/version.go @@ -3,5 +3,5 @@ package metadata const ( - Version = "v0.0.3" + Version = "v0.0.4" ) diff --git a/metadata/version_libznn.go b/metadata/version_libznn.go index 85f1c2c..af09e0a 100644 --- a/metadata/version_libznn.go +++ b/metadata/version_libznn.go @@ -3,5 +3,5 @@ package metadata const ( - Version = "v0.0.3-libznn" + Version = "v0.0.4-libznn" ) diff --git a/node/config.go b/node/config.go index 24849d4..739ed28 100644 --- a/node/config.go +++ b/node/config.go @@ -56,7 +56,7 @@ type Config struct { Name string - LogLevel string // "debug", "dbug" | "info" | "warn" | "error", "eror" | "crit" + LogLevel string // "debug", "dbug" | "info" | "warn" | "error", "error" | "crit" Producer *ProducerConfig RPC RPCConfig diff --git a/p2p/config.go b/p2p/config.go index cce9988..ec35665 100644 --- a/p2p/config.go +++ b/p2p/config.go @@ -29,113 +29,121 @@ const ( var ( DefaultSeeders = []string{ "enode://f0e3e1f507c7cc5a2d2cf0eb173c204c820786c7cecbc0118d1cf76e5eaba90348ce57e5c9dee35c27a40f5a44dafc61b8996f00bb33647c66f66c997ce6592b@206.188.197.194:35995", - "enode://b70e7a272a94f7c90d36cb928d602ef1cf3142216f8ba927152599cd5ced4d105efdf08b040220f934618da5c5602c842be4ccfd8e642b61c1ec31e663353e8d@206.188.197.198:35995", + "enode://b65fcbc62293e21ed026f922b986bec16c70dc44de79a11eaaba5650579bd9e5e43630aa0a12eb689dc644b4ccc593fa6e64f189fd892c11eb22917fe46120b6@139.177.178.226:35995", + "enode://4003fba9e3fa0dc7a2065149f9ffabf8d39723bf67c93e5a4a61f29881ed709190984fb7db381fc6cd0dee99b6840d89d78af4f345052cb5c8fc7ecce1ac3e14@85.146.181.127:35995", + "enode://142031953ebc6209604418654b3bd0c7ba61ffb588eba6ab717bc4f3234b9c05846126310afaa6ac1633b076e76cd160106f23e5200597cee2cabfb93068c709@178.18.250.224:35995", + "enode://fbb0db8326feb56058a8cfa5d91d73f098e1b4a69ca0613a0babe44303d56edb68434209cae0f7ffa4364628d2a15e9781e9f4f1cad6b6723341624eaad29e0b@139.59.210.101:35995", + "enode://05a237f3ce1b60c8bd7a5ac8067985e672d9637018166e4f92dab1a2941d7476843f3185394181965611cf0c074361ce55adca4e4f8ce27af9f19317c135fd1a@172.105.250.174:35995", + "enode://a76e2f0c9ccf9bf1c9d3f73e153ac197f786a44185c5f03789b8ba282848d73f7d3018cda21694e6e817167d26c34133efaeedbdaa272ad8139b0f1aad3f40fe@139.162.193.218:35995", + "enode://05df3df957ea073cd7d4d37e6fb007dde3702099ec1f76f04221d4accd1cf1fde7883d92f83791681123e3117987289ec788057ae5b1ce80ef63f2bec174e809@219.90.174.224:35995", + "enode://94956231cb9f71a60071e66faaec64d6c745c65e20c4ae3e02791b2be92ba28e3c7db3f26b70753e6b53b5ce20e5bc332cdd7fc49f989e6ee60610b3c781a1b8@51.81.223.138:35995", + "enode://f619a6a85f0fbf9094fc49cb99032619287232be9afce6aa93c858a8a8052f3c8a57becbeb1f379b9305e3726a7a9e86c22f2cc23ebb2ab0808f4212a054a7d0@45.61.137.59:35995", + "enode://fb8f309da546a2d0ad21a2cf4202407c9233090f2331f6017b0c31a8fcd8c85950ba67d74a8d53f9ec3dc4ffd8496953997f82d28f16681cc523a6b0d9c3a31f@193.149.176.86:35995", + "enode://505586f255e956fd4e1d082cc42512360f49aeb041e0e79a39de17ed090ca0cbe500ea2a1c6b983db3181ecc00ee1e57fdf08489d8b40f925c672148e37b63c6@213.168.248.184:35995", + "enode://0a19d028e6b9763e5d3180484f701d7c8b9be54b1d06aad5edeef8ee4103c56f5a62c7839e1f6e834d2bee5dccb5808d410414e50fc8fffcd6b376ae5d92ab26@172.86.75.56:35995", + "enode://cc46e64e1f1d834867b65dd0d2ff5ad35f32b6da190862d84023d44b5605e3eb0d136fd0e91192dcc3b8d3d7d344a336aecbccffbdb4ff372ae33d87817bea76@161.35.83.30:35995", "enode://39e3663c80022fcd2316f304852cceb333a948b84468d0a3c91f4e8884ee0b58ea28e17d83de7c49e57e662678fd17649526235a25538f798ccf32c1aa04807e@192.153.57.243:35995", - "enode://e01d6ebd34dcda37de26b828807069116700ebce2dc002198ac4242b3600cbbd646e7020826e6012b1470c76f62400159e612095b0e816bf6d5f5b999fa3e9d4@70.34.212.184:35995", + "enode://895a7ad858af86a0f85578d549a41b35b8565da2833a3731e6605f2efbc90c08d7a12d44f808729d703ef14f99034e57c7261d1808a021810316ecd5b9153410@135.148.121.53:35995", "enode://41607c490fdf1188671b0c979313bada903e73b36b75a7bcf0e5517ce7e9db0f6e0572032c78518b43577234982c17317c7fec1857fc250e39e2e5597645e600@173.212.199.188:35995", - "enode://cd151a34a02d70e52f2fed71c139192788c0e744bc1c0fca37d108272fdbdd9c8b7d6c1c0415387c2bb59afb7de91c47ddee85eabc5d2c270e6983f07c79ca76@164.68.123.24:35995", - "enode://f12d65630a637b84aa5b870e4738bc0eb325839811fb877432ca2cd436c63014ddbc337c337fe9161434b90e518e5283939136a43f0ddc5fdb8dc46444cf74f1@168.100.10.24:35995", - "enode://8d19eea3193848fe09c0cc781ac56b5c7064654b50bb79138b26e5d8aa58cb1069467ce6148351a56afc89c5a0d33e5774fab678a88cafba7c0254664153e57d@45.61.139.155:35995", - "enode://dc9e1becf72b0d4e7b666c8bc1bfbe0bbad3fa81c8175e4072d0155eab296ef9f3366ce85d81fb7d123d1d195110d5c68c0c2831670dea0c0dcb0fab44ab3ba4@5.22.208.179:35995", - "enode://c5fef6682b6651eb18f51a57f422e1cfc338c5018aaf31ad64da01bc5041f1668c17cefd53077cb3a85d72c123527bc3dbe14be63fc28f42b845112eaaa29502@94.237.121.187:35995", - "enode://0812b9dc68542286330dc768ff87719d13733400022c556a777152dac42e664f29c23a415125c9645783384fc18de91c6ece82b54338875db66530fc1da6ceeb@158.247.209.220:35995", + "enode://11c31b91530e839225803adf857a027edb9dd9f61217e58231335bb0d4d6c2dcdc0e03f8d60017ac19493b8aae2cefcc430c26a463142d372df9cb45f22461a2@161.97.106.183:35995", + "enode://4cbb3830e7564ffa06f896fdb898ca7153fa3625b4cf418188c7bb07911b1df30945efe12382faa8c208d82da43541eacf8c61dbf9a040a8378c34c54625dad8@168.100.8.148:35995", + "enode://81ce7179e4fb25d9bef53b2c981a4c2c917afe12f1d90aae765a274c47b34d9a3c0eb71ee1361c689459ee9316d2f0bd610ff29476b39354e8308017da36e6f2@51.178.138.91:35995", "enode://0c5213f89c748aab5c39e63bdc65bd97bf446a5229e640086e2784217d24731d78ab53ee5316619dc4299ab759304c5859272d35cfab74fd9106753e0db3d14e@135.148.32.194:35995", - "enode://e7b530fae2530f606e71ba9395832f261a4bcf1ef90bfdf713ae86840269053e3467f621cca7e8c524917e1cd420c2534ffd7c1bb192d8eb094cbd00a51340b0@162.33.177.32:35995", - "enode://8101aa3b1c8a9e4d1fb7adc8b7a85953a00e88b53522b3e83bb274b27090b11422f75b78d49ce352d064d4e37d97e7e49af9cad45965102b1c35fd1174d71694@51.79.167.98:35995", - "enode://ab32da309b1968f309e0af33a67ebae3520449335bdcf91f2496ac383737cac10f2f510452e133bed91f19d5bc6d1c54eec6ac5239815a84e5748957d6308e58@45.61.138.203:35995", - "enode://48b5ae8f7237d7d2a5fe37bdd6d36ba453056844fb42eb4fe015201b1dedfe3131101a2876b17d19a5900881fbdca1ed390f01e6f1979117e65fff97730bf598@140.82.52.157:35995", - "enode://f5ec2f67f50d9e2a0dfd29946ec378891efcc3c401fd86d1e16d42866d6929bd4b5697e4dc626ae39bc3fb07a20c1bab0812801630dc2ca0407f232858b4b856@52.203.201.129:35995", - "enode://895a7ad858af86a0f85578d549a41b35b8565da2833a3731e6605f2efbc90c08d7a12d44f808729d703ef14f99034e57c7261d1808a021810316ecd5b9153410@135.148.121.53:35995", + "enode://147bfa0aff6f4e543d0b954145777ce6d573d3b3e2b3e290ea6e74e3b52cf1e272ab334a788ba7c0d0b186314d0764c7d564f7564dfea528c8e9a40c359ea41b@135.125.183.82:35995", + "enode://446698548dff0319e363927d4fb566af72f1fdb30094d62d217cb71505949cd1936e4781998e6df32d7859d81ef84745e9f73dee1b4d69a076d34098a7879f3e@51.79.207.58:35995", + "enode://afa6e3b31aa45f161d2b23d53496ac62b95b0af1ef83ebc084a52079f82ed2d55cd5228f559a1ec534ca1bbb26a4ba7265cbf728e1a933998d8596bd7e8ce2d9@107.191.46.233:35995", + "enode://8d19eea3193848fe09c0cc781ac56b5c7064654b50bb79138b26e5d8aa58cb1069467ce6148351a56afc89c5a0d33e5774fab678a88cafba7c0254664153e57d@45.61.139.155:35995", + "enode://4899a78467d84ec9551101bc834dd81d769827dc6c7a97b145935a3190e26fde1f3940697eb2f5f7236130b7c49bd2151ad479bbd88b730ffb50163fa3e813ff@45.32.145.241:35995", + "enode://8da3624a825e9cc3536c6065f06f0dd38c4703bf32299f171a1d0e69d249c887220b875e1a82a38f8ecb37971d6c6d7741889abe942a1ddef75ac9dce3aa0575@62.171.148.56:35995", + "enode://be95e3fbc6288c33f205a7342fe3bc4221eba501e96b55566c43d8680c78db1698a931f6dcb6680caf246d8a75ce6e0a7d9edcc76dd82146a3e9a89a17149caa@95.179.213.154:35995", + "enode://3338bd98b7e7b929612035354682bed6fe7cd69412478544bd041148495d6dc0c912c2fb1f6f053053ac982a47d9427aecb1c18754ccd5e3150b297f29590fbe@134.122.32.79:35995", + "enode://9b2446fe1ec1fae2a48445507e082a492e0d62ea7ad251ae87bd2b138014b6dd7db71b9a0410f48ad704022709e2410cdc1fea2e602c48ea3896b57066f3d1b7@168.235.82.246:35995", + "enode://443e9a6497149a6a8e8bf323402669c86f97abf9eecb0784f717080b99d5ff14056c83d92536586156c23a926e93cac8c51c0225b5312f58f69c690117c2c369@51.195.42.177:35995", + "enode://f12d65630a637b84aa5b870e4738bc0eb325839811fb877432ca2cd436c63014ddbc337c337fe9161434b90e518e5283939136a43f0ddc5fdb8dc46444cf74f1@168.100.10.24:35995", + "enode://cd151a34a02d70e52f2fed71c139192788c0e744bc1c0fca37d108272fdbdd9c8b7d6c1c0415387c2bb59afb7de91c47ddee85eabc5d2c270e6983f07c79ca76@164.68.123.24:35995", + "enode://2926b50e30f90da144668c4d30ca36a1c7485c02bc15e50d644bfaf9e8f1731347f1bd211722fe27d26644d1bad297ee25d495950325d17f5319525d71baf4cc@147.182.182.219:35995", + "enode://58d37ec958e19e4fcc30de449c86859999872a1de722c8a9bbfce666e38ea8386f8bcb83d4be7edc3593fd7e823d6f116cc5980c99c3c6f776941fbb6dd9c65c@157.245.58.189:35995", + "enode://a29d5b365167f0c83421fa9be955ebacca02c06dcdbefb49200b44e443d05527986bb2ed12af505d34091c1eba62f6217c49f45476b05b0ac8478faa4cb51595@168.100.11.73:35995", + "enode://ec9bb22c5c2b0ff195bdd11fde1fcd420f18b7c796dba55812d45a2dfa2db05de1e31b54d0b57a49a650fae3ce728728b183e88d820b101f7a294b4813d2d2de@45.32.148.36:35995", "enode://7227e01a72e223c5f8284a62061a5bb4ab97305605b7f325ba2ff5db56323b4e3a41d871722a44a4e45abe8bbdc4a1bd79497fd108370ff4db0a9473d5522b3c@137.184.138.57:35995", - "enode://c5e8e37c9dcc8829c82865ef21375a8427d1a7ec8786848126cb1ab30f322424566d416f795eae72d524b55239ccc8d68c4d7e7288fe33a6f0ccf7a9c6701d02@178.62.223.132:35995", + "enode://8120b4267776701ac692d9ea98e1b4876ff0a6ab3f2dece94ad1e2c51f4e317377d9a7fac3ccf8461a9a7bdaaca85b4a7a651cd6f5f9e90a6b94f620ef8bee56@193.149.176.200:35995", "enode://00be0ab173fa0c60e4f93a8cac0670f0169ffab7e18e9b502e0d59ed0779f88d1cc8cbdea4f1fe784fae5358ef5ade78206fa3444ba6c215a99d0fd07fe89105@51.79.220.30:35995", - "enode://05a237f3ce1b60c8bd7a5ac8067985e672d9637018166e4f92dab1a2941d7476843f3185394181965611cf0c074361ce55adca4e4f8ce27af9f19317c135fd1a@172.105.250.174:35995", - "enode://0a19d028e6b9763e5d3180484f701d7c8b9be54b1d06aad5edeef8ee4103c56f5a62c7839e1f6e834d2bee5dccb5808d410414e50fc8fffcd6b376ae5d92ab26@172.86.75.56:35995", - "enode://29fdfa745c5328f5732c78141d4a30089c0046a25979babc2b65941571a54d47cbf3bcf61db35e4a647dc3e4f7ee4c2b782462495229985e438a965d0e8318b2@168.100.9.35:35995", - "enode://feab449b66cd8919b67f7bc2d65f8b0f6052da5d9abd47e3736c2090c2747ca1ccbead6640f0689d766c937500ca1f6309cae04ccca40006bb90d5b0ec637605@168.100.11.216:35995", - "enode://966506a2f9d10eaf0d4130199c2a6d8633a7145e6e8be541eb5e9e9774ee7d114a719531546f0c90cf8c87bc2f9e06c6093acb5be678c91f9ae713d8c7c7871d@51.79.207.42:35995", - "enode://81ce7179e4fb25d9bef53b2c981a4c2c917afe12f1d90aae765a274c47b34d9a3c0eb71ee1361c689459ee9316d2f0bd610ff29476b39354e8308017da36e6f2@51.178.138.91:35995", - "enode://afc9b2f71672f2af971f2d3bbb44fbfb01f6211d74a8445e06f3d71ce440bd5864e6f4cbbf7fcdfcc46d7327a29dd8827e45e7d0b5ca058eb18e7331f62b3552@46.101.96.48:35995", + "enode://53861c440aaabf784405b92d18b4679b8c3af7acef16ef70da7c8a0dd42c1ca4e2caced592e770619a53ac265c9dbdd18c5b0f99909bf0caf3b06bac80d273a5@216.238.78.237:35995", + "enode://1266d51fd4f880f85a19de8a07babce3dbd521fa5d8d5c8a42bfaec9682bf55b57468dc8852ae2ed0efdcf605c8f2338a75309f8d802c7f810e0eaff2fc35f0a@51.222.87.192:35995", + "enode://20fe352fc0df6e72fd2faee360f48e507e525d7aee36309bfcf74a4e0765aea4954005dcc33b51074f8dbd716e302f5c0b77fbc922be197b7b04c1fbce9699b0@51.161.11.44:35995", + "enode://f48a57e51de383e7c9b73929376729eaf43cd7db74771cfcb959ae9ee51ab0a0a78f82133eb7a521386ac811ff7b4ec4f554627bdd8abfc1dfcd934122902972@34.195.1.232:35995", + "enode://db3de09472c37eb7ce6a73e161705534719cc59e589873950d187b301ed66232a47508167a97e2ea938c64a36b15ff6465ac912f84a8f817e69da975dd927100@167.99.45.34:35995", + "enode://309b531b546056b5720c9f84602970250b15a512fbcc9be92c1f550b987fa2c05cab37b03cef01f257aab018efd62622fe692c589a60b04a498dd48e87e7d227@167.179.93.52:35995", + "enode://a2cafa0f08109f8d78b299051b8303c32b3bab0197642129bdaf69359e3f1a88967e0c86e84ee79812890edde32ab9b175ad22f3dd41e8ecf91efb63c2368a60@184.72.224.218:35995", + "enode://73abd23c2f363cae37d77e9a7dc0bb8929bea884c9e2d13b7907b5b726fcba77a90cd5ca58ce8a414fc9ceb07e366ad153168a26e0d58063884a273282972cad@136.244.118.110:35995", + "enode://e769b19efe6e5ad83359bd2e8a0a8f75a8cba77b58e414345fb16dfc2041f757beb11eacec89afef19d6b537ec4ca0fa8d4fd7162fd9553d9c6a81f88199c09c@45.76.78.163:35995", + "enode://4bb099df3341c3cea4a552631a19e4d153d2293888274f6d986e3a3b11bbc271f59b8209b576a78d0d1c246e321623ed3f410587dbd5aa59e85a196250ab954f@206.166.251.177:35995", + "enode://23e6f540079f4408f413e532887370c4ba4a7fcc99515b9026e2e2cffc789ce4b4219054635a4e5eb6aca6d09b9339c1ae949525a9cbeb1c599ac794bb7776d9@135.148.42.221:35995", + "enode://66c8bdfd255d4396fcc266ba10d2be09e1cdc62b4599bbc0a638e3ec858e8d3042c3a0a8d12b62141d7f683686fefae37c3393c7917be993d51d143e1951bad9@94.237.89.84:35995", + "enode://96e938604cc891e857f45722eb6a1f22d50172f2ec0aeaec286ba0cd3eea50a1cd5494254b52302a6286f0091f0392aec47d16ef5e07fa52bbcd6135ed708652@64.141.140.157:35995", + "enode://8cf666e6e473717615ab301236f0092597a024053bdd3075d770f8884783bbe32ceecc0e8e0243c44bc06235242b9e5a8de6c39e52eb140bba273267c2e55555@172.104.232.94:35995", + "enode://c6a3e32823953dad20d7c62e97d0596429361711d89349f894bc6c739ec99a96e0cd44d14de9299dc666af36031778d7f5260e12364bf2007f8be1cb3d8a1b1b@206.189.49.240:35995", + "enode://a5574b2b7cd44b039cad76a9a76907e02f1eb8429bd50a85dd85656985fc8496104cd4b2e474ffcc6a09ae409e719fd3316db2532e038dab3c859caf9b0b6b53@94.237.72.230:35995", + "enode://0812b9dc68542286330dc768ff87719d13733400022c556a777152dac42e664f29c23a415125c9645783384fc18de91c6ece82b54338875db66530fc1da6ceeb@158.247.209.220:35995", + "enode://21c7548ce923cab19450b8ff4edddebe61af20d58e4ec4f217a4b7cb29f949abf36d760826ab6a8c2ed46b12c27cdaa5c01d389471c5ae70a9f87618117ca7ec@168.100.11.164:35995", + "enode://57beb433afec6e8a3ebb0878a487d7ab6e460941f1c74d957bb9fadbd6f3ad8da10e5880e3b4c85f713e1d55418e2d2432347ba8d1d760f3514a3df475d10bf0@45.77.63.138:35995", + "enode://aaf3395c0ac875b134fab148e4e3849fa294f4c1693f9288fdadebaf6871141b19e54391bd89d3a917831d70e8b7082a4b35dfdd21cef6994996ec12eb5e3880@104.248.235.184:35995", "enode://916aa48165071bf1e86bc4bca272c86e092e981d210b3d7a29b099bdbda1aec362f7e085e603c3ae6a25833b44000519658e8aaa72c9ad13477a2a548ebb62ad@167.99.47.146:35995", + "enode://0220d5ed0e17344023d70f8e72259fe0940e232777d88f828c5be5cf67071eae26501182fdc6a9be2ce14db7a8315456594aad5d6f88609c73ad052b8183dd23@139.99.169.68:35995", + "enode://a86f314c068fcb323e5237cc907eeaab85d4bdb1019ce326c2590da67929dd8ac67ac4f6b15fe29ecbbfcf024208064e60344f20bbdf5902f989ab3041df374d@66.42.61.164:35995", + "enode://e7b530fae2530f606e71ba9395832f261a4bcf1ef90bfdf713ae86840269053e3467f621cca7e8c524917e1cd420c2534ffd7c1bb192d8eb094cbd00a51340b0@162.33.177.32:35995", + "enode://be6d3b37a65cc11a03c16bca860fb5b5b09a227857a7c98079258185331e8bb805b6368dfac2b8017e82ef208980c0cf425b7a39294455cfd278b8e045cedaa6@45.32.144.86:35995", + "enode://8a248e0401bdd75cff75fa51127f191e76a7a8a51190150c0134ec0280e0b2d0e41c02c35ecfbf9e6743a6f37dc6ad29137ccfa4edddd603beb18a5f7815a83f@83.136.253.45:35995", "enode://3ee9c3d18a32852781d497d6dadc900923d21b4af09014fc6318ec1f3dd50bae8203e3b30215da9eeb3794125304a651d7fd10545842055ff1154dff2bd51f0c@207.154.241.88:35995", - "enode://95a7bd0c25db95334048e74fba456db899453d01f68bfd26e5a4eff7ddf4bb943d9d0f1297fe696c0357fe0da5be70b2b3318a3a25a7cf1257ea7f67f6c1097d@94.237.97.178:35995", - "enode://0657cbf47a069dca3dd7e7e6c7b5877d4adac2bde5e5169100083bf3e4d2ccdeeb5d77f84cc27035e56acc3edc1348d8e36d1841a4d78c63060305112b8106a7@209.250.253.110:35995", - "enode://4c38beeab6bc5531fbe49ebc8c2297d708631a41431b1fd624ddaecd2adda516b25e6de6483a59dededd92b763ad5afc805dcc9b49d6acfdf58c8d244387ff18@216.128.178.220:35995", - "enode://4ae54feadcccd35ffe98e1673a65ebd83c3a38e91f7ec6727bd9c91a8bcb97314887ecae2c48f802849a76279e241799d93a1a2533981442dbfb4cd6c252db59@168.100.10.94:35995", - "enode://443e9a6497149a6a8e8bf323402669c86f97abf9eecb0784f717080b99d5ff14056c83d92536586156c23a926e93cac8c51c0225b5312f58f69c690117c2c369@51.195.42.177:35995", - "enode://6d081b24e1c29f0afec4d0919d024efdbd0df16305c9a59b54985e654b7b68662f9e03af1b0bea06cf81593c7fc87bf47c6cccb2665ce375915dba8f3d3f95bc@45.61.139.241:35995", - "enode://0e1d704aadde5eca5e2e28c0b471de703af06c5ce36ec1f1a8a9b8ef276ecf852200975a2533dafab3d868df2ed1a335eea0fb864e457739d1bb369df2d881c7@195.154.77.36:35995", - "enode://9b2446fe1ec1fae2a48445507e082a492e0d62ea7ad251ae87bd2b138014b6dd7db71b9a0410f48ad704022709e2410cdc1fea2e602c48ea3896b57066f3d1b7@168.235.82.246:35995", - "enode://be95e3fbc6288c33f205a7342fe3bc4221eba501e96b55566c43d8680c78db1698a931f6dcb6680caf246d8a75ce6e0a7d9edcc76dd82146a3e9a89a17149caa@95.179.213.154:35995", - "enode://bcf31036d64766ac9f62466840fe90f2cfcccf52ca2ce9a65fbfa1b460bb5a849037460ea8c1f1472d923f0a54b9280b74cd16c10096ee1a6d8fc300aeaa9cbf@45.61.137.203:35995", - "enode://b1cf85ad2e8d7c52c8e38768fa9c2e2acf1d1c4f226eee3ba0a28eaec2bcb0dc622b7ed908863e7ef89816f79f4401070d84f6380db01b7a033e24ca801e3315@139.99.57.14:35995", - "enode://e769b19efe6e5ad83359bd2e8a0a8f75a8cba77b58e414345fb16dfc2041f757beb11eacec89afef19d6b537ec4ca0fa8d4fd7162fd9553d9c6a81f88199c09c@45.76.78.163:35995", - "enode://9ee088dec8426aa2ffe1959a0a533a939aa4896c529952efc7387436b43d7d9c4f46b0688d8400322f8689e7319c37ac09366bf39a08072e6bc0c9ac7f1d7878@46.59.40.154:35995", - "enode://2155ec9ee05593174451fa0109224f590b039811748274ea754eff2d541c6831cec4c4ab33184e0482e249c245707f88c2588722ca329556f19bfbaf8560be72@5.9.153.75:35995", - "enode://f4578f4664919f0667d86d0ad62a40b779700f93c32741f65d4ef89df4704d143e9fee1306b3e4ac300edd3cddb5084ef7eb4dcce69487329bbf70fbc62a5343@94.237.81.159:35995", - "enode://e64a76f95ec98b2115ca733d74bffabe9ffa558b6edf38ae050074b8f3601e148c8ccb7802dc67bd1876ec424e91ae7323b0406245a1da248190ea6046703b8f@173.199.71.172:35995", - "enode://9fbfbf4029a60ca7e29c4099f125c2ae9c3cfaff6e2ae6ef61dac2ac1f62a08170dc8d335ecebf4d1da76b79b42b5585e925bc2a085fd60ae83834c6e076fe9c@168.100.9.136:35995", - "enode://ccc881a2b9ca77c1d5f016fd070d36b4fdedb5727e7341b83c12551da05ac26e26af849d0f86547b873f00b7d02ee5ce3f36f5c96dbaa3b5fffde52e68485d5a@168.100.10.249:35995", - "enode://a035a79d52dcd4152b55c9bd7fb8a29e60c85455409cabf71b6cbe57b284b362c2c9772ab17792bd018eeba83586ebb01743501e6e58af1cdd8395f13959a0ef@131.153.99.14:35995", - "enode://7a57e3a373f5a85a39ca61df1488c2107c7494ac6f2bb36a1671ecb051bd03f1aace5f5eeddb86d3ae0d5959c617801c4c2740a9938625d39f619a04fabb6b6c@51.195.138.179:35995", - "enode://baa5442ca68253c2c7f1966902b7ec0063b400be32cf5b5a04d5715bc6276e620164f299eb0b724c69277cdb905830993c104857f913ef28fe37d3b5eddfe9b6@206.188.197.91:35995", - "enode://c10eb6a097b174041cdf59b200b37a9312593e52807e438faac4cba9e65007dad71d7fa2a979a6e2f5b355b7c12d59cf56a6a3dee2c40c7d8f8c5665387c072d@198.244.149.192:35995", - "enode://ec9bb22c5c2b0ff195bdd11fde1fcd420f18b7c796dba55812d45a2dfa2db05de1e31b54d0b57a49a650fae3ce728728b183e88d820b101f7a294b4813d2d2de@45.32.148.36:35995", - "enode://c0c74acb0a5b1f2e756b3c988dbe371901e08db67f24600d7e90239aad1175d6204760bd5357af8b30f7f793a818fec7de361128c085a1eb1068febea06971d6@23.239.29.185:35995", - "enode://b65fcbc62293e21ed026f922b986bec16c70dc44de79a11eaaba5650579bd9e5e43630aa0a12eb689dc644b4ccc593fa6e64f189fd892c11eb22917fe46120b6@139.177.178.226:35995", - "enode://147bfa0aff6f4e543d0b954145777ce6d573d3b3e2b3e290ea6e74e3b52cf1e272ab334a788ba7c0d0b186314d0764c7d564f7564dfea528c8e9a40c359ea41b@135.125.183.82:35995", - "enode://0316e6152bed5773850c72a79a8eed9c4dd72966d6f5101e860fa73da6c9a064701964cf3e0a09420a60c38000497af4c43c0e1374bfe5120dee0180f7bc30ed@51.81.209.53:35995", - "enode://11c31b91530e839225803adf857a027edb9dd9f61217e58231335bb0d4d6c2dcdc0e03f8d60017ac19493b8aae2cefcc430c26a463142d372df9cb45f22461a2@161.97.106.183:35995", - "enode://cc46e64e1f1d834867b65dd0d2ff5ad35f32b6da190862d84023d44b5605e3eb0d136fd0e91192dcc3b8d3d7d344a336aecbccffbdb4ff372ae33d87817bea76@161.35.83.30:35995", - "enode://4003fba9e3fa0dc7a2065149f9ffabf8d39723bf67c93e5a4a61f29881ed709190984fb7db381fc6cd0dee99b6840d89d78af4f345052cb5c8fc7ecce1ac3e14@85.146.181.127:35995", - "enode://2a973d12a9db040c750890c55cb2a913387d9f245c06863175127d392b6d69c980dd04813a050214c8d1e49093691ef5c6b5b180c859ddc1b36113334853404e@199.247.11.50:35995", "enode://e65a83e5c4b3976f80b60ce39cb461fbfffa00b3d7390c654e30816713e6567e907aeb75c59130fb4369879ad6e072ff507cd7fe4a020c8ac6732ed61024915c@178.18.250.182:35995", - "enode://58fd515a50e3b9b68322a87ad3b262ca74441e1dd41012aa851f82d76159fab1d071c78c993e2be9d50f86bd4dd951e779df58d5b19d3631c75087bf1fba475e@178.18.251.111:35995", - "enode://76a19535bed8d3d79d0b0ccfc92c8f0101efb25ff4bed928a7d3c5fb8896eb69d1e96c3ded3066ab9c08341d91c30dade34762d251397af8dbdcb106112f1c16@3.213.131.134:35995", - "enode://b957e7ee1ca5ae13d18dbe7b2d35665f287340570ee4c56d8dbbaf8824281ca5cb97258ee21904ec678d01ebf89e47457fc430af1386b5f4c40178eef8b46100@159.223.135.7:35995", - "enode://8a248e0401bdd75cff75fa51127f191e76a7a8a51190150c0134ec0280e0b2d0e41c02c35ecfbf9e6743a6f37dc6ad29137ccfa4edddd603beb18a5f7815a83f@83.136.253.45:35995", + "enode://8101aa3b1c8a9e4d1fb7adc8b7a85953a00e88b53522b3e83bb274b27090b11422f75b78d49ce352d064d4e37d97e7e49af9cad45965102b1c35fd1174d71694@51.79.167.98:35995", "enode://fa8aa3474fb7c21ad710d65e998081f66db04951208610de08b52d307dc90b4377add49996c83c791836fa82c57adefe668f93f6b22a2cb977e609881b395d29@161.35.70.164:35995", + "enode://2a973d12a9db040c750890c55cb2a913387d9f245c06863175127d392b6d69c980dd04813a050214c8d1e49093691ef5c6b5b180c859ddc1b36113334853404e@199.247.11.50:35995", + "enode://e01d6ebd34dcda37de26b828807069116700ebce2dc002198ac4242b3600cbbd646e7020826e6012b1470c76f62400159e612095b0e816bf6d5f5b999fa3e9d4@70.34.212.184:35995", "enode://be87ecbf6550f5b25fa4104099ff6ad3d2068338e4f37c1aaef2b7ef181a1495996a784efef9db6a86922df023b94f8359d33103374edf1246f2f68e04ad86a8@151.236.218.189:35995", - "enode://d1ccad69f9af06e8f2cfd136bf95234ae9a04c9151b90d52aaa28b6a61d9bdf31cccae32adae88cf77be05bf69daf1789669c3c7540ad3c5a6373d043a9e516e@173.88.2.242:35995", - "enode://73abd23c2f363cae37d77e9a7dc0bb8929bea884c9e2d13b7907b5b726fcba77a90cd5ca58ce8a414fc9ceb07e366ad153168a26e0d58063884a273282972cad@136.244.118.110:35995", - "enode://4c04529911e54a0fa71c32fdafec6068527282feb4657ab82eba989a493b232fe6eb1c96c2619631b630efbe617821d2558ffc327db0e0c29fb3e7ff9c325319@78.141.207.100:35995", - "enode://58d37ec958e19e4fcc30de449c86859999872a1de722c8a9bbfce666e38ea8386f8bcb83d4be7edc3593fd7e823d6f116cc5980c99c3c6f776941fbb6dd9c65c@157.245.58.189:35995", - "enode://db3de09472c37eb7ce6a73e161705534719cc59e589873950d187b301ed66232a47508167a97e2ea938c64a36b15ff6465ac912f84a8f817e69da975dd927100@167.99.45.34:35995", - "enode://1266d51fd4f880f85a19de8a07babce3dbd521fa5d8d5c8a42bfaec9682bf55b57468dc8852ae2ed0efdcf605c8f2338a75309f8d802c7f810e0eaff2fc35f0a@51.222.87.192:35995", "enode://93ec8f477459ee8172c347720397d7f7cacaacb666354930ddde68459309c675d151616038dfdc55392b6513e1209ae5645d91cb1fc04212f3f9a031e8ceb975@162.33.178.80:35995", - "enode://fcb00dff0574d41ed48204b97138bc71c257e45ce75a6d947ef7db41c3505fd13367cd0add5b953a702ed507085ac203d4b014c4d329767e62301704aea8e594@135.125.203.173:35995", - "enode://8da3624a825e9cc3536c6065f06f0dd38c4703bf32299f171a1d0e69d249c887220b875e1a82a38f8ecb37971d6c6d7741889abe942a1ddef75ac9dce3aa0575@62.171.148.56:35995", - "enode://6b43a14d541106a9693e10aa7cad8800e7ca7c42c7303ad8fa6f4874b7d476fcfbb71b282f1618349c104fa4b4d05925ffdacc81ad9a6ca2f977aaa1a8ce525f@192.153.57.146:35995", - "enode://2926b50e30f90da144668c4d30ca36a1c7485c02bc15e50d644bfaf9e8f1731347f1bd211722fe27d26644d1bad297ee25d495950325d17f5319525d71baf4cc@147.182.182.219:35995", - "enode://a76e2f0c9ccf9bf1c9d3f73e153ac197f786a44185c5f03789b8ba282848d73f7d3018cda21694e6e817167d26c34133efaeedbdaa272ad8139b0f1aad3f40fe@139.162.193.218:35995", + "enode://0e1d704aadde5eca5e2e28c0b471de703af06c5ce36ec1f1a8a9b8ef276ecf852200975a2533dafab3d868df2ed1a335eea0fb864e457739d1bb369df2d881c7@195.154.77.36:35995", + "enode://2155ec9ee05593174451fa0109224f590b039811748274ea754eff2d541c6831cec4c4ab33184e0482e249c245707f88c2588722ca329556f19bfbaf8560be72@5.9.153.75:35995", + "enode://4c04529911e54a0fa71c32fdafec6068527282feb4657ab82eba989a493b232fe6eb1c96c2619631b630efbe617821d2558ffc327db0e0c29fb3e7ff9c325319@78.141.207.100:35995", + "enode://951c4925af0a3a76bfe468571fbb7445952b190c8c21b6e28284c010051022c5003da619d40cfc15d580d97e0ded88ed613dbeed659642fb7827ed8ddbcce40a@94.237.98.76:35995", + "enode://93ea511b985bddfc607305a398b93a6b615b7b3e0eb46032d8b2b069fdfdb8bfe3c54768329227bab503c15580501ff14c991b5ce1faea1a1f3c32db57fb6e1c@173.88.2.242:35995", + "enode://0316e6152bed5773850c72a79a8eed9c4dd72966d6f5101e860fa73da6c9a064701964cf3e0a09420a60c38000497af4c43c0e1374bfe5120dee0180f7bc30ed@51.81.209.53:35995", + "enode://c10eb6a097b174041cdf59b200b37a9312593e52807e438faac4cba9e65007dad71d7fa2a979a6e2f5b355b7c12d59cf56a6a3dee2c40c7d8f8c5665387c072d@198.244.149.192:35995", + "enode://c5e8e37c9dcc8829c82865ef21375a8427d1a7ec8786848126cb1ab30f322424566d416f795eae72d524b55239ccc8d68c4d7e7288fe33a6f0ccf7a9c6701d02@178.62.223.132:35995", + "enode://10aac3948b0eaf4515ce86e8e743057104da7d555c026814f0b2b080dbfe08551d2414c4dc13c78947f9f7ffd4478c03e9821fa4368fe6d7b1a865940afead58@151.236.218.225:35995", "enode://117cbe09a0a0851c9b69614427c928513706c0278d430973af0691e1208ec912a0307d333a0a68b45d08fdbe35543a7689ddd20cc11fcb2e0b454ea129ba491d@172.104.232.92:35995", - "enode://a5574b2b7cd44b039cad76a9a76907e02f1eb8429bd50a85dd85656985fc8496104cd4b2e474ffcc6a09ae409e719fd3316db2532e038dab3c859caf9b0b6b53@94.237.72.230:35995", - "enode://21c7548ce923cab19450b8ff4edddebe61af20d58e4ec4f217a4b7cb29f949abf36d760826ab6a8c2ed46b12c27cdaa5c01d389471c5ae70a9f87618117ca7ec@168.100.11.164:35995", - "enode://a86f314c068fcb323e5237cc907eeaab85d4bdb1019ce326c2590da67929dd8ac67ac4f6b15fe29ecbbfcf024208064e60344f20bbdf5902f989ab3041df374d@66.42.61.164:35995", - "enode://618c288aae091f9b5160a1782851c914c491d2ba69bb062574ea6f0110ccce97b15992833db2287b64766a6686da4b8122c530ae615d609d885239a796498c9c@146.59.13.232:35995", - "enode://309b531b546056b5720c9f84602970250b15a512fbcc9be92c1f550b987fa2c05cab37b03cef01f257aab018efd62622fe692c589a60b04a498dd48e87e7d227@167.179.93.52:35995", - "enode://0220d5ed0e17344023d70f8e72259fe0940e232777d88f828c5be5cf67071eae26501182fdc6a9be2ce14db7a8315456594aad5d6f88609c73ad052b8183dd23@139.99.169.68:35995", - "enode://bd6f7f30e1c017c05f248b3fc0d8f43993204a044017a3036a6eddf089641d69b4aa2681e7610cf65a7782010965045f39afd9c8b2cf7550d88aa38dd06342af@5.22.216.115:35995", - "enode://d1544cb5b17feed9741d847fb5c6ae11ed300aaffe36fbc4847dcbeae5271591cb1e09f193190bbd45a5afe46543ea3e9d2b80dc058a1563447ce8a3d3bca9e4@5.22.220.126:35995", - "enode://ca9ef86f0a045a8309c75481c0950ea0fd41b27741abfc8f336d5e0fe4b9186792c3dc99c0c8d9aa47e80c3e08c9ca166652e8aba10d45db8d3448ce214031e5@5.22.208.33:35995", - "enode://53861c440aaabf784405b92d18b4679b8c3af7acef16ef70da7c8a0dd42c1ca4e2caced592e770619a53ac265c9dbdd18c5b0f99909bf0caf3b06bac80d273a5@216.238.78.237:35995", + "enode://afc9b2f71672f2af971f2d3bbb44fbfb01f6211d74a8445e06f3d71ce440bd5864e6f4cbbf7fcdfcc46d7327a29dd8827e45e7d0b5ca058eb18e7331f62b3552@46.101.96.48:35995", + "enode://6b43a14d541106a9693e10aa7cad8800e7ca7c42c7303ad8fa6f4874b7d476fcfbb71b282f1618349c104fa4b4d05925ffdacc81ad9a6ca2f977aaa1a8ce525f@192.153.57.146:35995", + "enode://b5cb8de404aa30340e0cb5b9005aa9d81773abd8849dcd69313b645a3c94df83fbae9f39c9cf2471a01b37c6c5e250385c5360c7244733b4bc2fa11300c61134@159.223.180.104:35995", + "enode://2b76de9669fe2e8384738b044df8bfb0799dff4eefef2af74b271e88c3a0825aecbbcdc54cfef4d12bde7a66cb10abae5d72c9a02baa0607df5c0615731c3953@45.61.138.181:35995", + "enode://d55cab15a4a5611addb5821406db727768ec8d60fe896bcc8e992150d45f88839c86c1b2a80b5105208d28a49f6eb4dba7efd60b6204f098e037401a7654f016@206.166.251.172:35995", + "enode://48b5ae8f7237d7d2a5fe37bdd6d36ba453056844fb42eb4fe015201b1dedfe3131101a2876b17d19a5900881fbdca1ed390f01e6f1979117e65fff97730bf598@140.82.52.157:35995", + "enode://ef29831130509229193e90ea543d221330762af9b616a404f0324d5135240763ef04a07a64249789499879b357babce9ee71bff62106638003dfde44846c5364@51.38.70.66:35995", + "enode://c5fef6682b6651eb18f51a57f422e1cfc338c5018aaf31ad64da01bc5041f1668c17cefd53077cb3a85d72c123527bc3dbe14be63fc28f42b845112eaaa29502@94.237.121.187:35995", + "enode://dde39ad93b853730cb5fded17336daef8ac7556571701139ae87db95569f845b900a6824e708526f00163ce0db25b942115406a896c530cf8c9710ea957cdfbe@94.237.48.175:35995", + "enode://6d081b24e1c29f0afec4d0919d024efdbd0df16305c9a59b54985e654b7b68662f9e03af1b0bea06cf81593c7fc87bf47c6cccb2665ce375915dba8f3d3f95bc@45.61.139.241:35995", + "enode://ccc881a2b9ca77c1d5f016fd070d36b4fdedb5727e7341b83c12551da05ac26e26af849d0f86547b873f00b7d02ee5ce3f36f5c96dbaa3b5fffde52e68485d5a@168.100.10.249:35995", + "enode://baa5442ca68253c2c7f1966902b7ec0063b400be32cf5b5a04d5715bc6276e620164f299eb0b724c69277cdb905830993c104857f913ef28fe37d3b5eddfe9b6@206.188.197.91:35995", + "enode://95a7bd0c25db95334048e74fba456db899453d01f68bfd26e5a4eff7ddf4bb943d9d0f1297fe696c0357fe0da5be70b2b3318a3a25a7cf1257ea7f67f6c1097d@94.237.97.178:35995", + "enode://a035a79d52dcd4152b55c9bd7fb8a29e60c85455409cabf71b6cbe57b284b362c2c9772ab17792bd018eeba83586ebb01743501e6e58af1cdd8395f13959a0ef@131.153.99.14:35995", "enode://a0cd4a6f5dc207a00e04ab115f2c76aeb7a09059a4b0a25906734e5f094d847436fc500f809ccf32df471a2cfed62e9be7b446b21abd971312bb9e176c548dd8@135.148.149.29:35995", - "enode://4bb099df3341c3cea4a552631a19e4d153d2293888274f6d986e3a3b11bbc271f59b8209b576a78d0d1c246e321623ed3f410587dbd5aa59e85a196250ab954f@206.166.251.177:35995", - "enode://8b3b47b8bf97a4de762ee198fa60e762a5017362dbc7925a3cf07d04327e9af9a61e62a0039b6e4471cc9026c7bbfc904f4a0d49b7dd74d6c36385f8e9952f97@198.244.189.217:35995", - "enode://446698548dff0319e363927d4fb566af72f1fdb30094d62d217cb71505949cd1936e4781998e6df32d7859d81ef84745e9f73dee1b4d69a076d34098a7879f3e@51.79.207.58:35995", - "enode://66c8bdfd255d4396fcc266ba10d2be09e1cdc62b4599bbc0a638e3ec858e8d3042c3a0a8d12b62141d7f683686fefae37c3393c7917be993d51d143e1951bad9@94.237.89.84:35995", - "enode://951c4925af0a3a76bfe468571fbb7445952b190c8c21b6e28284c010051022c5003da619d40cfc15d580d97e0ded88ed613dbeed659642fb7827ed8ddbcce40a@94.237.98.76:35995", - "enode://3338bd98b7e7b929612035354682bed6fe7cd69412478544bd041148495d6dc0c912c2fb1f6f053053ac982a47d9427aecb1c18754ccd5e3150b297f29590fbe@134.122.32.79:35995", + "enode://4ae54feadcccd35ffe98e1673a65ebd83c3a38e91f7ec6727bd9c91a8bcb97314887ecae2c48f802849a76279e241799d93a1a2533981442dbfb4cd6c252db59@168.100.10.94:35995", + "enode://fcb00dff0574d41ed48204b97138bc71c257e45ce75a6d947ef7db41c3505fd13367cd0add5b953a702ed507085ac203d4b014c4d329767e62301704aea8e594@135.125.203.173:35995", "enode://a97c55fdfdb54e73dffd81220b4c63fcaa0dcc490779338e8e894b916c7d4f79470698f4a248dea4c0adcc5145aa34a57850f1e89b3ca44e0446a1e6c2e43830@174.138.9.44:35995", - "enode://8cf666e6e473717615ab301236f0092597a024053bdd3075d770f8884783bbe32ceecc0e8e0243c44bc06235242b9e5a8de6c39e52eb140bba273267c2e55555@172.104.232.94:35995", - "enode://142031953ebc6209604418654b3bd0c7ba61ffb588eba6ab717bc4f3234b9c05846126310afaa6ac1633b076e76cd160106f23e5200597cee2cabfb93068c709@178.18.250.224:35995", - "enode://707fd5ed15dff53a7f7e385f1e66b048ff5e18676a28a85316cb1b86b234dcc2db1c7b8d1f8b24aeb92117413b1e97917acd6c1324aa76e1b06b592e7569902e@143.198.230.118:35995", - "enode://edacb01c36d1a9dbdb7972235c7aac270b8b864b95feb4aa83dfd92a937e5a2feac5d74928a7fb9ec9e33d3d9d2213699e1a88cacf2264c4580467ec3455b11b@107.191.47.245:35995", - "enode://20fe352fc0df6e72fd2faee360f48e507e525d7aee36309bfcf74a4e0765aea4954005dcc33b51074f8dbd716e302f5c0b77fbc922be197b7b04c1fbce9699b0@51.161.11.44:35995", - "enode://bed9d25749636d89b225bfbff5e1f376fe05969713ae6aa3c448b948308076b5429b03aaf9e52a846a668d2758b75b5ac48dadd17a95bbdd9011269779a8c625@5.22.208.132:35995", + "enode://4484e79bcc7a5f4a347418b30a224d068d9ddbe003d348aa52f105eed978f4aff1deb901a46356343f29d4249dcc7d667d8973845a2df2a4ad20e52c37ab07f8@199.247.9.91:35995", + "enode://b1cf85ad2e8d7c52c8e38768fa9c2e2acf1d1c4f226eee3ba0a28eaec2bcb0dc622b7ed908863e7ef89816f79f4401070d84f6380db01b7a033e24ca801e3315@139.99.57.14:35995", + "enode://ca9ef86f0a045a8309c75481c0950ea0fd41b27741abfc8f336d5e0fe4b9186792c3dc99c0c8d9aa47e80c3e08c9ca166652e8aba10d45db8d3448ce214031e5@5.22.208.33:35995", + "enode://7a57e3a373f5a85a39ca61df1488c2107c7494ac6f2bb36a1671ecb051bd03f1aace5f5eeddb86d3ae0d5959c617801c4c2740a9938625d39f619a04fabb6b6c@51.195.138.179:35995", + "enode://58fd515a50e3b9b68322a87ad3b262ca74441e1dd41012aa851f82d76159fab1d071c78c993e2be9d50f86bd4dd951e779df58d5b19d3631c75087bf1fba475e@178.18.251.111:35995", + "enode://4c38beeab6bc5531fbe49ebc8c2297d708631a41431b1fd624ddaecd2adda516b25e6de6483a59dededd92b763ad5afc805dcc9b49d6acfdf58c8d244387ff18@216.128.178.220:35995", + "enode://624fe22625ccbdd4ff9b145929e8e431b943cd981a10187c4396c802bb84c40444ed3427df55a96fd0e7c27bff579157ac72742fb5e377490f92ae30ba00ea6f@188.24.17.118:35995", "enode://011692665618e03080397ce5cdf100226be33ccbcd0135edebce76dbd14211511fd49391965357cd627ead80025a46d5137b9f71c6e859f03076db4e27421557@198.199.64.82:35995", - "enode://beac9efb3cc853d2fddbeea6dc7ab1b0285a1dc8ed7a10cf9e1940bc001b109a63e4bc1b8b6737280c8d913e52a0887d0a4d19235cbe5726acf07619c0127e14@178.128.100.152:35995", + "enode://707fd5ed15dff53a7f7e385f1e66b048ff5e18676a28a85316cb1b86b234dcc2db1c7b8d1f8b24aeb92117413b1e97917acd6c1324aa76e1b06b592e7569902e@143.198.230.118:35995", + "enode://adeb672c808d4c828d9df810e1bce4e1e88b6302d1a595cf268c8d008757ffafc75dc4377ef90572a60cb6f34526740b14d79ccf3e4359b4472cb7557048b071@168.100.9.135:35995", + "enode://d7925e4d3143b352fa2a051ad8226e70dab66ac91da233e861eff0db743a31127922bbc041b54b060c56fc109fa4916c038d96a72a9e175d10bbe54b9bef9e26@168.100.10.3:35995", + "enode://bcf31036d64766ac9f62466840fe90f2cfcccf52ca2ce9a65fbfa1b460bb5a849037460ea8c1f1472d923f0a54b9280b74cd16c10096ee1a6d8fc300aeaa9cbf@45.61.137.203:35995", "enode://6364aedefbb25b02d67641a2c69b2784246c6a794b82e6a903f06fb3ecad8f1636b41a1c7ff94400e4a512cf893e26ae03952052e96d306b932de30af03fceef@45.77.106.147:35995", + "enode://beac9efb3cc853d2fddbeea6dc7ab1b0285a1dc8ed7a10cf9e1940bc001b109a63e4bc1b8b6737280c8d913e52a0887d0a4d19235cbe5726acf07619c0127e14@178.128.100.152:35995", } ) diff --git a/vm/embedded/definition/plasma.go b/vm/embedded/definition/plasma.go index 037ce02..c934b59 100644 --- a/vm/embedded/definition/plasma.go +++ b/vm/embedded/definition/plasma.go @@ -73,7 +73,7 @@ func (entry *FusionInfo) Delete(context db.DB) error { } func getFusionInfoKey(addr types.Address, hash types.Hash) []byte { - return common.JoinBytes(tokenInfoKeyPrefix, addr.Bytes(), hash.Bytes()) + return common.JoinBytes(fusionInfoKeyPrefix, addr.Bytes(), hash.Bytes()) } func isFusionInfoKey(key []byte) bool { return key[0] == fusionInfoKeyPrefix[0] diff --git a/vm/embedded/embedded_test.go b/vm/embedded/embedded_test.go index e67f90d..86a54b2 100644 --- a/vm/embedded/embedded_test.go +++ b/vm/embedded/embedded_test.go @@ -29,16 +29,8 @@ func TestDumpContractsABIMethods(t *testing.T) { common.Expect(t, dump, ` [ -{"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"AddPhase", "id":"c7e13ddc", "signature":"AddPhase(hash,string,string,string,uint256,uint256)"} -{"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"CreateProject", "id":"77c044b6", "signature":"CreateProject(string,string,string,uint256,uint256)"} {"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"Donate", "id":"cb7f8b2a", "signature":"Donate()"} -{"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"Update", "id":"20093ea6", "signature":"Update()"} -{"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"UpdatePhase", "id":"c1d7d323", "signature":"UpdatePhase(hash,string,string,string,uint256,uint256)"} -{"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"VoteByName", "id":"5c6c1064", "signature":"VoteByName(hash,string,uint8)"} -{"address":"z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22", "name":"VoteByProdAddress", "id":"90ed001c", "signature":"VoteByProdAddress(hash,uint8)"} -{"address":"z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae", "name":"BurnZnn", "id":"096b75a4", "signature":"BurnZnn(uint256)"} {"address":"z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae", "name":"Donate", "id":"cb7f8b2a", "signature":"Donate()"} -{"address":"z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae", "name":"Fund", "id":"912f3c3f", "signature":"Fund(uint256,uint256)"} {"address":"z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae", "name":"Update", "id":"20093ea6", "signature":"Update()"} {"address":"z1qxemdeddedxplasmaxxxxxxxxxxxxxxxxsctrp", "name":"CancelFuse", "id":"f9ca9dc3", "signature":"CancelFuse(hash)"} {"address":"z1qxemdeddedxplasmaxxxxxxxxxxxxxxxxsctrp", "name":"Fuse", "id":"5ac942e8", "signature":"Fuse(address)"} diff --git a/vm/embedded/implementation/accelerator.go b/vm/embedded/implementation/accelerator.go index ec7733b..901af10 100644 --- a/vm/embedded/implementation/accelerator.go +++ b/vm/embedded/implementation/accelerator.go @@ -51,8 +51,8 @@ func checkMetaDataStatic(param *definition.AcceleratorParam) error { } func checkReceivedFunds(context vm_context.AccountVmContext, project *definition.Project) bool { - znnFunds := project.ZnnFundsNeeded - qsrFunds := project.QsrFundsNeeded + znnFunds := new(big.Int).Set(project.ZnnFundsNeeded) + qsrFunds := new(big.Int).Set(project.QsrFundsNeeded) for _, phaseId := range project.PhaseIds { phase, err := definition.GetPhaseEntry(context.Storage(), phaseId) if err != nil { @@ -201,7 +201,7 @@ func (p *AddPhaseMethod) ReceiveBlock(context vm_context.AccountVmContext, sendB err := definition.ABIAccelerator.UnpackMethod(param, p.MethodName, sendBlock.Data) common.DealWithErr(err) - // Check project exists and block is send by owner + // Check project exists and block is sent by owner project, err := definition.GetProjectEntry(context.Storage(), param.Id) if err != nil { return nil, constants.ErrDataNonExistent @@ -317,14 +317,16 @@ func (p *UpdateEmbeddedAcceleratorMethod) ReceiveBlock(context vm_context.Accoun } blocks := make([]*nom.AccountBlock, 0) - znnBalance, err := context.GetBalance(types.ZnnTokenStandard) + balanceZnn, err := context.GetBalance(types.ZnnTokenStandard) if err != nil { return nil, err } - qsrBalance, err := context.GetBalance(types.QsrTokenStandard) + znnBalance := new(big.Int).Set(balanceZnn) + balanceQsr, err := context.GetBalance(types.QsrTokenStandard) if err != nil { return nil, err } + qsrBalance := new(big.Int).Set(balanceQsr) sort.Slice(projectList, func(i, j int) bool { var phaseITimestamp, phaseJTimestamp int64 @@ -345,7 +347,7 @@ func (p *UpdateEmbeddedAcceleratorMethod) ReceiveBlock(context vm_context.Accoun for _, project := range projectList { if project.Status == definition.VotingStatus { // Check if project voting period has ended - if project.CreationTimestamp+constants.AcceleratorProjectVotingPeriod > frontierMomentum.Timestamp.Unix() { + if project.CreationTimestamp+constants.AcceleratorProjectVotingPeriod >= frontierMomentum.Timestamp.Unix() { ok := checkAcceleratorVotes(context, project.Id, numPillars) acceleratorLog.Debug("project passed voting period", "project-id", project.Id, "passed-votes", ok) if ok { @@ -485,6 +487,7 @@ func (p *UpdatePhaseMethod) ReceiveBlock(context vm_context.AccountVmContext, se newPhase.QsrFundsNeeded = param.QsrFundsNeeded newPhase.CreationTimestamp = frontierMomentum.Timestamp.Unix() newPhase.Status = definition.VotingStatus + newPhase.ProjectId = project.Id newPhase.Save(context.Storage()) project.PhaseIds[len(project.PhaseIds)-1] = newPhase.Id diff --git a/vm/embedded/implementation/liquidity.go b/vm/embedded/implementation/liquidity.go index d4bf340..7bda396 100644 --- a/vm/embedded/implementation/liquidity.go +++ b/vm/embedded/implementation/liquidity.go @@ -148,7 +148,7 @@ func (p *FundMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBlock if err != nil { return nil, err } - if znnBalance.Cmp(param.ZnnReward) > 0 && qsrBalance.Cmp(param.QsrReward) > 0 { + if znnBalance.Cmp(param.ZnnReward) != -1 && qsrBalance.Cmp(param.QsrReward) != -1 { znnReward := &nom.AccountBlock{ Address: types.LiquidityContract, ToAddress: types.AcceleratorContract, @@ -157,7 +157,7 @@ func (p *FundMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBlock Amount: param.ZnnReward, } blocks = append(blocks, znnReward) - znnBalance = znnBalance.Sub(znnBalance, znnReward.Amount) + qsrReward := &nom.AccountBlock{ Address: types.LiquidityContract, ToAddress: types.AcceleratorContract, @@ -215,7 +215,7 @@ func (p *BurnZnnMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBl if err != nil { return nil, err } - if znnBalance.Cmp(param.BurnAmount) > 0 { + if znnBalance.Cmp(param.BurnAmount) != -1 { burnBlock := &nom.AccountBlock{ Address: types.LiquidityContract, ToAddress: types.TokenContract, diff --git a/vm/embedded/implementation/pillars.go b/vm/embedded/implementation/pillars.go index fbe0d05..a6f96a4 100644 --- a/vm/embedded/implementation/pillars.go +++ b/vm/embedded/implementation/pillars.go @@ -75,7 +75,7 @@ func checkAndRegisterPillar(context vm_context.AccountVmContext, param *definiti // check if pillar name is used _, err := definition.GetPillarInfo(context.Storage(), param.Name) if err == constants.ErrDataNonExistent { - // ok, does not exists + // ok, does not exist } else if err == nil { return constants.ErrNotUnique } else { diff --git a/vm/embedded/implementation/sentinel.go b/vm/embedded/implementation/sentinel.go index 49f7e95..bb90491 100644 --- a/vm/embedded/implementation/sentinel.go +++ b/vm/embedded/implementation/sentinel.go @@ -160,7 +160,7 @@ func (method *UpdateEmbeddedSentinelMethod) GetPlasma(plasmaTable *constants.Pla func (method *UpdateEmbeddedSentinelMethod) ValidateSendBlock(block *nom.AccountBlock) error { var err error - if err := definition.ABIStake.UnpackEmptyMethod(method.MethodName, block.Data); err != nil { + if err := definition.ABISentinel.UnpackEmptyMethod(method.MethodName, block.Data); err != nil { return constants.ErrUnpackError } @@ -168,7 +168,7 @@ func (method *UpdateEmbeddedSentinelMethod) ValidateSendBlock(block *nom.Account return constants.ErrInvalidTokenOrAmount } - block.Data, err = definition.ABIStake.PackMethod(method.MethodName) + block.Data, err = definition.ABISentinel.PackMethod(method.MethodName) return err } func (method *UpdateEmbeddedSentinelMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBlock *nom.AccountBlock) ([]*nom.AccountBlock, error) { diff --git a/vm/embedded/implementation/spork.go b/vm/embedded/implementation/spork.go index a047dc3..ef7aa34 100644 --- a/vm/embedded/implementation/spork.go +++ b/vm/embedded/implementation/spork.go @@ -59,7 +59,7 @@ func (p *CreateSporkMethod) ValidateSendBlock(block *nom.AccountBlock) error { } func (p *CreateSporkMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBlock *nom.AccountBlock) ([]*nom.AccountBlock, error) { if err := p.ValidateSendBlock(sendBlock); err != nil { - sentinelLog.Debug("invalid create - syntactic validation failed", "address", sendBlock.Address, "reason", err) + sporkLog.Debug("invalid create - syntactic validation failed", "address", sendBlock.Address, "reason", err) return nil, err } @@ -110,6 +110,11 @@ func (p *ActivateSporkMethod) ValidateSendBlock(block *nom.AccountBlock) error { return err } func (p *ActivateSporkMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBlock *nom.AccountBlock) ([]*nom.AccountBlock, error) { + if err := p.ValidateSendBlock(sendBlock); err != nil { + sporkLog.Debug("invalid spork activation - syntactic validation failed", "address", sendBlock.Address, "reason", err) + return nil, err + } + id := new(types.Hash) err := definition.ABISpork.UnpackMethod(id, p.MethodName, sendBlock.Data) if err != nil { diff --git a/vm/embedded/implementation/token.go b/vm/embedded/implementation/token.go index c7356f2..65b2ca6 100644 --- a/vm/embedded/implementation/token.go +++ b/vm/embedded/implementation/token.go @@ -116,10 +116,10 @@ func (p *IssueMethod) ReceiveBlock(context vm_context.AccountVmContext, sendBloc tokenStandard := newTokenID(sendBlock.Hash) if _, err := definition.GetTokenInfo(context.Storage(), tokenStandard); err == constants.ErrDataNonExistent { - } else if err != constants.ErrDataNonExistent { - common.DealWithErr(err) } else if err == nil { return nil, constants.ErrIDNotUnique + } else if err != constants.ErrDataNonExistent { + common.DealWithErr(err) } tokenInfo := definition.TokenInfo{ diff --git a/vm/embedded/tests/accelerator_test.go b/vm/embedded/tests/accelerator_test.go index b0d7feb..792c14c 100644 --- a/vm/embedded/tests/accelerator_test.go +++ b/vm/embedded/tests/accelerator_test.go @@ -908,6 +908,335 @@ t=2001-09-09T01:47:00+0000 lvl=dbug msg=activated module=embedded contract=spork z.ExpectBalance(g.User1.Address, types.QsrTokenStandard, 12000000000000) } +func TestAccelerator_DoublePhases(t *testing.T) { + z := mock.NewMockZenonWithCustomEpochDuration(t, time.Hour) + defer z.StopPanic() + defer z.SaveLogs(common.EmbeddedLogger).Equals(t, ` +t=2001-09-09T01:46:50+0000 lvl=dbug msg=created module=embedded contract=spork spork="&{Id:34d8229bd07586c243c6e74122a18d6d2002694c72964a7186111026a9cec6ab Name:spork-accelerator Description:activate spork for accelerator Activated:false EnforcementHeight:0}" +t=2001-09-09T01:47:00+0000 lvl=dbug msg=activated module=embedded contract=spork spork="&{Id:34d8229bd07586c243c6e74122a18d6d2002694c72964a7186111026a9cec6ab Name:spork-accelerator Description:activate spork for accelerator Activated:true EnforcementHeight:9}" +t=2001-09-09T01:50:00+0000 lvl=dbug msg="successfully create project" module=embedded contract=accelerator project="&{Id:3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f Owner:z1qzal6c5s9rjnnxd2z7dvdhjxpmmj4fmw56a0mz Name:Test Project 1 Description:TEST DESCRIPTION Url:test.com ZnnFundsNeeded:+100 QsrFundsNeeded:+0 CreationTimestamp:1000000200 LastUpdateTimestamp:1000000200 Status:0 PhaseIds:[]}" +t=2001-09-09T01:50:20+0000 lvl=dbug msg="voted for hash" module=embedded contract=common pillar-vote="&{Id:3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f Name:TEST-pillar-1 Vote:0}" +t=2001-09-09T01:50:40+0000 lvl=dbug msg="voted for hash" module=embedded contract=common pillar-vote="&{Id:3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f Name:TEST-pillar-cool Vote:0}" +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxpyllarxxxxxxxxxxxxxxxsy3fmg current-height=361 last-update-height=0 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=0 pillar-name=TEST-pillar-1 reward="&{DelegationReward:+11995123837 BlockReward:+9916666627 TotalReward:+21911790464 ProducedBlockNum:119 ExpectedBlockNum:120 Weight:+2099916666666}" total-weight=2499916666666 self-weight=2099916666666 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=0 pillar-name=TEST-pillar-cool reward="&{DelegationReward:+1152038401 BlockReward:+9999999960 TotalReward:+11152038361 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+200000000000}" total-weight=2499916666666 self-weight=200000000000 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=0 pillar-name=TEST-pillar-znn reward="&{DelegationReward:+1152038401 BlockReward:+9999999960 TotalReward:+11152038361 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+200000000000}" total-weight=2499916666666 self-weight=200000000000 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=pillar epoch=1 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxsentynelxxxxxxxxxxxxxwy0r2r current-height=361 last-update-height=0 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating sentinel reward" module=embedded contract=sentinel epoch=0 total-znn-reward=187200000000 total-qsr-reward=500000000000 cumulated-sentinel=0 start-time=1000000000 end-time=1000003600 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=sentinel epoch=1 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxstakexxxxxxxxxxxxxxxxjv8v62 current-height=361 last-update-height=0 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating stake reward" module=embedded contract=stake epoch=0 total-reward=1000000000000 cumulated-stake=0 start-time=1000000000 end-time=1000003600 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=stake epoch=1 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae current-height=361 last-update-height=0 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating liquidity reward" module=embedded contract=liquidity epoch=0 znn-amount=187200000000 qsr-amount=500000000000 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=liquidity epoch=1 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22 current-height=361 last-update-height=0 +t=2001-09-09T02:46:40+0000 lvl=dbug msg="check accelerator votes" module=embedded contract=accelerator votes="&{Id:3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f Total:2 Yes:2 No:0}" status=true +t=2001-09-09T02:46:40+0000 lvl=dbug msg="project passed voting period" module=embedded contract=accelerator project-id=3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f passed-votes=true +t=2001-09-09T02:46:50+0000 lvl=dbug msg="minted ZTS" module=embedded contract=token token="&{Owner:z1qxemdeddedxpyllarxxxxxxxxxxxxxxxsy3fmg TokenName:Zenon Coin TokenSymbol:ZNN TokenDomain:zenon.network TotalSupply:+19687200000000 MaxSupply:+4611686018427387903 Decimals:8 IsMintable:true IsBurnable:true IsUtility:true TokenStandard:zts1znnxxxxxxxxxxxxx9z4ulx}" minted-amount=187200000000 to-address=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae +t=2001-09-09T02:46:50+0000 lvl=dbug msg="minted ZTS" module=embedded contract=token token="&{Owner:z1qxemdeddedxstakexxxxxxxxxxxxxxxxjv8v62 TokenName:QuasarCoin TokenSymbol:QSR TokenDomain:zenon.network TotalSupply:+181050000000000 MaxSupply:+4611686018427387903 Decimals:8 IsMintable:true IsBurnable:true IsUtility:true TokenStandard:zts1qsrxxxxxxxxxxxxxmrhjll}" minted-amount=500000000000 to-address=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae +t=2001-09-09T02:47:00+0000 lvl=info msg="received donation" module=embedded contract=common embedded=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae from-address=z1qxemdeddedxt0kenxxxxxxxxxxxxxxxxh9amk0 zts=zts1znnxxxxxxxxxxxxx9z4ulx amount=187200000000 +t=2001-09-09T02:47:00+0000 lvl=dbug msg="successfully created phase" module=embedded contract=accelerator phase="&{Id:3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f ProjectId:3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f Name:Phase 1 Description:Description for phase 1 Url:www.phase1.com ZnnFundsNeeded:+50 QsrFundsNeeded:+0 CreationTimestamp:1000003620 AcceptedTimestamp:0 Status:0}" +t=2001-09-09T02:47:00+0000 lvl=info msg="received donation" module=embedded contract=common embedded=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae from-address=z1qxemdeddedxt0kenxxxxxxxxxxxxxxxxh9amk0 zts=zts1qsrxxxxxxxxxxxxxmrhjll amount=500000000000 +t=2001-09-09T02:47:20+0000 lvl=dbug msg="voted for hash" module=embedded contract=common pillar-vote="&{Id:3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f Name:TEST-pillar-1 Vote:0}" +t=2001-09-09T02:47:40+0000 lvl=dbug msg="voted for hash" module=embedded contract=common pillar-vote="&{Id:3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f Name:TEST-pillar-cool Vote:0}" +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxpyllarxxxxxxxxxxxxxxxsy3fmg current-height=722 last-update-height=361 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=1 pillar-name=TEST-pillar-1 reward="&{DelegationReward:+12095907836 BlockReward:+9999999960 TotalReward:+22095907796 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+2099900000000}" total-weight=2499900000000 self-weight=2099900000000 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=1 pillar-name=TEST-pillar-cool reward="&{DelegationReward:+1152046081 BlockReward:+9999999960 TotalReward:+11152046041 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+200000000000}" total-weight=2499900000000 self-weight=200000000000 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=1 pillar-name=TEST-pillar-znn reward="&{DelegationReward:+1152046081 BlockReward:+9999999960 TotalReward:+11152046041 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+200000000000}" total-weight=2499900000000 self-weight=200000000000 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=pillar epoch=2 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxsentynelxxxxxxxxxxxxxwy0r2r current-height=722 last-update-height=361 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating sentinel reward" module=embedded contract=sentinel epoch=1 total-znn-reward=187200000000 total-qsr-reward=500000000000 cumulated-sentinel=0 start-time=1000003600 end-time=1000007200 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=sentinel epoch=2 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxstakexxxxxxxxxxxxxxxxjv8v62 current-height=722 last-update-height=361 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating stake reward" module=embedded contract=stake epoch=1 total-reward=1000000000000 cumulated-stake=0 start-time=1000003600 end-time=1000007200 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=stake epoch=2 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae current-height=722 last-update-height=361 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating liquidity reward" module=embedded contract=liquidity epoch=1 znn-amount=187200000000 qsr-amount=500000000000 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=liquidity epoch=2 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22 current-height=722 last-update-height=361 +t=2001-09-09T03:46:50+0000 lvl=dbug msg="check accelerator votes" module=embedded contract=accelerator votes="&{Id:3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f Total:2 Yes:2 No:0}" status=true +t=2001-09-09T03:46:50+0000 lvl=dbug msg="finishing and paying phase" module=embedded contract=accelerator project-id=3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f phase-id=3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f znn-amount=50 qsr-amount=0 +t=2001-09-09T03:47:00+0000 lvl=dbug msg="minted ZTS" module=embedded contract=token token="&{Owner:z1qxemdeddedxpyllarxxxxxxxxxxxxxxxsy3fmg TokenName:Zenon Coin TokenSymbol:ZNN TokenDomain:zenon.network TotalSupply:+19874400000000 MaxSupply:+4611686018427387903 Decimals:8 IsMintable:true IsBurnable:true IsUtility:true TokenStandard:zts1znnxxxxxxxxxxxxx9z4ulx}" minted-amount=187200000000 to-address=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae +t=2001-09-09T03:47:00+0000 lvl=dbug msg="successfully created phase" module=embedded contract=accelerator phase="&{Id:8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830 ProjectId:3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f Name:Phase 2 Description:Description for phase 2 Url:www.phase1.com ZnnFundsNeeded:+50 QsrFundsNeeded:+0 CreationTimestamp:1000007220 AcceptedTimestamp:0 Status:0}" +t=2001-09-09T03:47:00+0000 lvl=dbug msg="minted ZTS" module=embedded contract=token token="&{Owner:z1qxemdeddedxstakexxxxxxxxxxxxxxxxjv8v62 TokenName:QuasarCoin TokenSymbol:QSR TokenDomain:zenon.network TotalSupply:+181550000000000 MaxSupply:+4611686018427387903 Decimals:8 IsMintable:true IsBurnable:true IsUtility:true TokenStandard:zts1qsrxxxxxxxxxxxxxmrhjll}" minted-amount=500000000000 to-address=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae +t=2001-09-09T03:47:10+0000 lvl=info msg="received donation" module=embedded contract=common embedded=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae from-address=z1qxemdeddedxt0kenxxxxxxxxxxxxxxxxh9amk0 zts=zts1znnxxxxxxxxxxxxx9z4ulx amount=187200000000 +t=2001-09-09T03:47:10+0000 lvl=info msg="received donation" module=embedded contract=common embedded=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae from-address=z1qxemdeddedxt0kenxxxxxxxxxxxxxxxxh9amk0 zts=zts1qsrxxxxxxxxxxxxxmrhjll amount=500000000000 +t=2001-09-09T03:47:20+0000 lvl=dbug msg="voted for hash" module=embedded contract=common pillar-vote="&{Id:8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830 Name:TEST-pillar-1 Vote:0}" +t=2001-09-09T03:47:40+0000 lvl=dbug msg="voted for hash" module=embedded contract=common pillar-vote="&{Id:8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830 Name:TEST-pillar-cool Vote:0}" +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxpyllarxxxxxxxxxxxxxxxsy3fmg current-height=1083 last-update-height=722 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=2 pillar-name=TEST-pillar-1 reward="&{DelegationReward:+12095907836 BlockReward:+9999999960 TotalReward:+22095907796 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+2099900000000}" total-weight=2499900000000 self-weight=2099900000000 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=2 pillar-name=TEST-pillar-cool reward="&{DelegationReward:+1152046081 BlockReward:+9999999960 TotalReward:+11152046041 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+200000000000}" total-weight=2499900000000 self-weight=200000000000 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="computer pillar-reward" module=embedded contract=pillar epoch=2 pillar-name=TEST-pillar-znn reward="&{DelegationReward:+1152046081 BlockReward:+9999999960 TotalReward:+11152046041 ProducedBlockNum:120 ExpectedBlockNum:120 Weight:+200000000000}" total-weight=2499900000000 self-weight=200000000000 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=pillar epoch=3 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxsentynelxxxxxxxxxxxxxwy0r2r current-height=1083 last-update-height=722 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating sentinel reward" module=embedded contract=sentinel epoch=2 total-znn-reward=187200000000 total-qsr-reward=500000000000 cumulated-sentinel=0 start-time=1000007200 end-time=1000010800 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=sentinel epoch=3 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxstakexxxxxxxxxxxxxxxxjv8v62 current-height=1083 last-update-height=722 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating stake reward" module=embedded contract=stake epoch=2 total-reward=1000000000000 cumulated-stake=0 start-time=1000007200 end-time=1000010800 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=stake epoch=3 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae current-height=1083 last-update-height=722 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating liquidity reward" module=embedded contract=liquidity epoch=2 znn-amount=187200000000 qsr-amount=500000000000 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="invalid update - rewards not due yet" module=embedded contract=liquidity epoch=3 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="updating contract state" module=embedded contract=common contract=z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22 current-height=1083 last-update-height=722 +t=2001-09-09T04:47:00+0000 lvl=dbug msg="check accelerator votes" module=embedded contract=accelerator votes="&{Id:8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830 Total:2 Yes:2 No:0}" status=true +t=2001-09-09T04:47:00+0000 lvl=dbug msg="finishing and paying phase" module=embedded contract=accelerator project-id=3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f phase-id=8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830 znn-amount=50 qsr-amount=0 +t=2001-09-09T04:47:10+0000 lvl=dbug msg="minted ZTS" module=embedded contract=token token="&{Owner:z1qxemdeddedxpyllarxxxxxxxxxxxxxxxsy3fmg TokenName:Zenon Coin TokenSymbol:ZNN TokenDomain:zenon.network TotalSupply:+20061600000000 MaxSupply:+4611686018427387903 Decimals:8 IsMintable:true IsBurnable:true IsUtility:true TokenStandard:zts1znnxxxxxxxxxxxxx9z4ulx}" minted-amount=187200000000 to-address=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae +t=2001-09-09T04:47:10+0000 lvl=dbug msg="minted ZTS" module=embedded contract=token token="&{Owner:z1qxemdeddedxstakexxxxxxxxxxxxxxxxjv8v62 TokenName:QuasarCoin TokenSymbol:QSR TokenDomain:zenon.network TotalSupply:+182050000000000 MaxSupply:+4611686018427387903 Decimals:8 IsMintable:true IsBurnable:true IsUtility:true TokenStandard:zts1qsrxxxxxxxxxxxxxmrhjll}" minted-amount=500000000000 to-address=z1qxemdeddedxlyquydytyxxxxxxxxxxxxflaaae +`) + + activateAccelerator(z) + acceleratorAPI := embedded.NewAcceleratorApi(z) + + defer z.CallContract(&nom.AccountBlock{ + Address: g.User1.Address, + ToAddress: types.AcceleratorContract, + TokenStandard: types.ZnnTokenStandard, + Amount: constants.ProjectCreationAmount, + Data: definition.ABIAccelerator.PackMethodPanic(definition.CreateProjectMethodName, + "Test Project 1", //param.Name + "TEST DESCRIPTION", //param.Description + "test.com", //param.Url + big.NewInt(100), //param.ZnnFundsNeeded + big.NewInt(0), //param.QsrFundsNeeded + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + projectList, err := acceleratorAPI.GetAll(0, 10) + common.FailIfErr(t, err) + + defer z.CallContract(&nom.AccountBlock{ + Address: g.Pillar1.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.VoteByProdAddressMethodName, + projectList.List[0].Id, + definition.VoteYes, + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + defer z.CallContract(&nom.AccountBlock{ + Address: g.Pillar2.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.VoteByProdAddressMethodName, + projectList.List[0].Id, + definition.VoteYes, + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + z.InsertMomentumsTo(60*6 + 2) + + defer z.CallContract(&nom.AccountBlock{ + Address: g.User1.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.AddPhaseMethodName, + projectList.List[0].Id, //param.Hash + "Phase 1", //param.Name + "Description for phase 1", //param.Description + "www.phase1.com", //param.Url + big.NewInt(50), //param.ZnnFundsNeeded + big.NewInt(0), //param.QsrFundsNeeded + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + projectList, err = acceleratorAPI.GetAll(0, 10) + common.FailIfErr(t, err) + + defer z.CallContract(&nom.AccountBlock{ + Address: g.Pillar1.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.VoteByProdAddressMethodName, + projectList.List[0].PhaseIds[0], + definition.VoteYes, + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + defer z.CallContract(&nom.AccountBlock{ + Address: g.Pillar2.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.VoteByProdAddressMethodName, + projectList.List[0].PhaseIds[0], + definition.VoteYes, + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + z.InsertMomentumsTo(60*6*2 + 2) + + z.ExpectBalance(types.AcceleratorContract, types.ZnnTokenStandard, 99999950) + common.Json(acceleratorAPI.GetAll(0, 10)).Equals(t, ` +{ + "count": 1, + "list": [ + { + "id": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "owner": "z1qzal6c5s9rjnnxd2z7dvdhjxpmmj4fmw56a0mz", + "name": "Test Project 1", + "description": "TEST DESCRIPTION", + "url": "test.com", + "znnFundsNeeded": 100, + "qsrFundsNeeded": 0, + "creationTimestamp": 1000000200, + "lastUpdateTimestamp": 1000007210, + "status": 1, + "phaseIds": [ + "3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f" + ], + "votes": { + "id": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "total": 2, + "yes": 2, + "no": 0 + }, + "phases": [ + { + "phase": { + "id": "3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f", + "projectID": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "name": "Phase 1", + "description": "Description for phase 1", + "url": "www.phase1.com", + "znnFundsNeeded": 50, + "qsrFundsNeeded": 0, + "creationTimestamp": 1000003620, + "acceptedTimestamp": 1000007210, + "status": 2 + }, + "votes": { + "id": "3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f", + "total": 2, + "yes": 2, + "no": 0 + } + } + ] + } + ] +}`) + + defer z.CallContract(&nom.AccountBlock{ + Address: g.User1.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.AddPhaseMethodName, + projectList.List[0].Id, //param.Hash + "Phase 2", //param.Name + "Description for phase 2", //param.Description + "www.phase1.com", //param.Url + big.NewInt(50), //param.ZnnFundsNeeded + big.NewInt(0), //param.QsrFundsNeeded + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + projectList, err = acceleratorAPI.GetAll(0, 10) + common.FailIfErr(t, err) + + defer z.CallContract(&nom.AccountBlock{ + Address: g.Pillar1.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.VoteByProdAddressMethodName, + projectList.List[0].PhaseIds[1], + definition.VoteYes, + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + defer z.CallContract(&nom.AccountBlock{ + Address: g.Pillar2.Address, + ToAddress: types.AcceleratorContract, + Data: definition.ABIAccelerator.PackMethodPanic(definition.VoteByProdAddressMethodName, + projectList.List[0].PhaseIds[1], + definition.VoteYes, + ), + }).Error(t, nil) + z.InsertNewMomentum() // cemented send block + z.InsertNewMomentum() // cemented token-receive-block + + z.InsertMomentumsTo(60*6*3 + 2*2) + z.ExpectBalance(types.AcceleratorContract, types.ZnnTokenStandard, 99999900) + common.Json(acceleratorAPI.GetAll(0, 10)).Equals(t, ` +{ + "count": 1, + "list": [ + { + "id": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "owner": "z1qzal6c5s9rjnnxd2z7dvdhjxpmmj4fmw56a0mz", + "name": "Test Project 1", + "description": "TEST DESCRIPTION", + "url": "test.com", + "znnFundsNeeded": 100, + "qsrFundsNeeded": 0, + "creationTimestamp": 1000000200, + "lastUpdateTimestamp": 1000010820, + "status": 4, + "phaseIds": [ + "3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f", + "8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830" + ], + "votes": { + "id": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "total": 2, + "yes": 2, + "no": 0 + }, + "phases": [ + { + "phase": { + "id": "3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f", + "projectID": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "name": "Phase 1", + "description": "Description for phase 1", + "url": "www.phase1.com", + "znnFundsNeeded": 50, + "qsrFundsNeeded": 0, + "creationTimestamp": 1000003620, + "acceptedTimestamp": 1000007210, + "status": 2 + }, + "votes": { + "id": "3364612a108e4490ab1c789583e0cbd451597e889a441bdcf4fcc8a6e95c705f", + "total": 2, + "yes": 2, + "no": 0 + } + }, + { + "phase": { + "id": "8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830", + "projectID": "3821d3a7f16d0155b476bdfbc8ccb849651d5b9c2a2bef3767675f0cb297ff4f", + "name": "Phase 2", + "description": "Description for phase 2", + "url": "www.phase1.com", + "znnFundsNeeded": 50, + "qsrFundsNeeded": 0, + "creationTimestamp": 1000007220, + "acceptedTimestamp": 1000010820, + "status": 2 + }, + "votes": { + "id": "8bf0d7d086296ea2c90224094e26f41e68a2896f8cb4d010eda01937fc1ef830", + "total": 2, + "yes": 2, + "no": 0 + } + } + ] + } + ] +}`) +} + func TestAccelerator_CreatePhaseWithInvalidAmount(t *testing.T) { z := mock.NewMockZenonWithCustomEpochDuration(t, time.Hour) defer z.StopPanic() @@ -1533,6 +1862,55 @@ t=2001-09-09T03:47:10+0000 lvl=info msg="received donation" module=embedded cont z.InsertNewMomentum() // cemented token-receive-block projectList, err = acceleratorAPI.GetAll(0, 10) common.FailIfErr(t, err) + common.Json(acceleratorAPI.GetAll(0, 10)).Equals(t, ` +{ + "count": 1, + "list": [ + { + "id": "c24a5a6166c8948aba23d68aa39e206fc1410138ad218500749b75e2ae92d730", + "owner": "z1qzal6c5s9rjnnxd2z7dvdhjxpmmj4fmw56a0mz", + "name": "Test Project 1", + "description": "TEST DESCRIPTION", + "url": "test.com", + "znnFundsNeeded": 100, + "qsrFundsNeeded": 1000, + "creationTimestamp": 1000000200, + "lastUpdateTimestamp": 1000003620, + "status": 1, + "phaseIds": [ + "05f123c4e83b1cf5559638e2acfb1c2eb8575797b34b2d4b8d95490a7251f4b5" + ], + "votes": { + "id": "c24a5a6166c8948aba23d68aa39e206fc1410138ad218500749b75e2ae92d730", + "total": 2, + "yes": 2, + "no": 0 + }, + "phases": [ + { + "phase": { + "id": "05f123c4e83b1cf5559638e2acfb1c2eb8575797b34b2d4b8d95490a7251f4b5", + "projectID": "c24a5a6166c8948aba23d68aa39e206fc1410138ad218500749b75e2ae92d730", + "name": "Phase 1", + "description": "Description for phase 1", + "url": "www.phase1.com", + "znnFundsNeeded": 10, + "qsrFundsNeeded": 0, + "creationTimestamp": 1000003620, + "acceptedTimestamp": 0, + "status": 0 + }, + "votes": { + "id": "05f123c4e83b1cf5559638e2acfb1c2eb8575797b34b2d4b8d95490a7251f4b5", + "total": 0, + "yes": 0, + "no": 0 + } + } + ] + } + ] +}`) defer z.CallContract(&nom.AccountBlock{ Address: g.Pillar1.Address, @@ -1644,7 +2022,7 @@ t=2001-09-09T03:47:10+0000 lvl=info msg="received donation" module=embedded cont "confirmationDetail": { "numConfirmations": 2, "momentumHeight": 723, - "momentumHash": "9d444f8c8fa72cf672096ff00ba1689668df8408a9e2f4bd94b2fb0d711aceea", + "momentumHash": "ed5609e0ab225c50c6466b377e7fe18d059eb17e4153b707527c41b63ead8d0f", "momentumTimestamp": 1000007220 }, "pairedAccountBlock": null @@ -1691,7 +2069,7 @@ t=2001-09-09T03:47:10+0000 lvl=info msg="received donation" module=embedded cont "confirmationDetail": { "numConfirmations": 2, "momentumHeight": 723, - "momentumHash": "9d444f8c8fa72cf672096ff00ba1689668df8408a9e2f4bd94b2fb0d711aceea", + "momentumHash": "ed5609e0ab225c50c6466b377e7fe18d059eb17e4153b707527c41b63ead8d0f", "momentumTimestamp": 1000007220 }, "pairedAccountBlock": null