Skip to content
Snippets Groups Projects
Unverified Commit 1ba03783 authored by Anthony Martin's avatar Anthony Martin Committed by GitHub
Browse files

Merge pull request #150 from steemit/149-max-key_auths

handling key_auths maximum #149
parents b6521c06 c1a1978b
No related branches found
No related tags found
No related merge requests found
import unittest
import json
import shutil
from tinman import keysub
......@@ -16,4 +17,5 @@ class KeysubTest(unittest.TestCase):
def test_compute_keypair_from_seed(self):
# Note, resolver needs to be mocked to properly test.
self.assertRaises(FileNotFoundError, keysub.compute_keypair_from_seed, '1234', 'secret')
self.assertRaises(json.decoder.JSONDecodeError, keysub.compute_keypair_from_seed, '1234', 'secret', '/usr/bin/true')
true_exe = shutil.which("true")
self.assertRaises(json.decoder.JSONDecodeError, keysub.compute_keypair_from_seed, '1234', 'secret', true_exe)
......@@ -2890,6 +2890,483 @@
"withdraw_routes":0,
"withdrawn":0,
"witnesses_voted_for":0
},
{
"active":{
"account_auths":[
[
"ekitcho",
1
],
[
"fabien",
1
],
[
"steem",
1
]
],
"key_auths":[
[
"STM4tcBtAKuaHwxZQVQm3crNu3fnntQgqGuCY8FB5ToPaqfudBRbL",
1
],
[
"STM4u9AsZJatTUoKgsTozMgpAggEC1v1viZbfNLMQEGvC9w7wYgJp",
1
],
[
"STM4zL2ghUfdoUXhZo3QJgfC3jECjocSdZjhBVFjmp9Nk28CLhtqV",
1
],
[
"STM55GQUShKKqnMrXyrYo3nvwBe7YUGtxELreHnAWbMYqSNiAopRh",
1
],
[
"STM563dEnF4JNwt2uoU4kxh8kBH1qRhQ7QU7oRBifi1KmhgwdVneD",
1
],
[
"STM56QCnp8za1QeUwNBxnhHBsG3Mv2Y1wneh1KbRU9GBr65jZJowk",
1
],
[
"STM58dUdo79DowQMFHJA48wwseypEXdNdcL38racTjdvh9Ak76Yqn",
1
],
[
"STM5C1BA2fB3X6j3hUdpoRQhKreBNeVeaooPxYt7XAsMt1DkyfVMY",
1
],
[
"STM5CUcAQdpqmBshuntCek5PQxi4tXE6ARfv589TN6DQGG5DHaZgE",
1
],
[
"STM5DjUjnXM9yGuko3ATAcmW68mnSanVfTwGqvumg1qdmm5mrgepH",
1
],
[
"STM5EjvYyhZDD4QwgdXLGetoTg23WbyzS1eFxBNPsYv8pfufas4Bk",
1
],
[
"STM5HJWutvgCo2KK6XaPGS5FoLbvGueZvkLerZm3rJDU8pK4Rig6m",
1
],
[
"STM5Nk5SorkgXv5Qd4DDVu5g8YR8UsGEwVR6tXaNmZ5TTERADJyx2",
1
],
[
"STM5cQbv4HhMQ76CGiE9GE87RE2Zkyojju3GqQHTX4MePxU7JhH4S",
1
],
[
"STM5h7kQegkxY9Y6CYxqYxNw5VGANaTMMy9D8LKeydJ76QEzBhuhr",
1
],
[
"STM5i4xRh8vvan8HaiawsHggH54qhy9nokARtdH4SAXa1VzTZ2D36",
1
],
[
"STM5reWks7gqnD8HSAacZWGJURRnKR3az5WEUsW7RtRsSL7ea5rQx",
1
],
[
"STM5wXYGhMogrBt6M5w7jmLiyUWhxDPrSwyZWnMaysHsG8od9paP7",
1
],
[
"STM5zHg31CwmjZUkxh6p5LiB1ZzStt8JvjwSkjkKUbJS2t33BYKLs",
1
],
[
"STM5zwtu9A53pHjmq7cVHnW2Apzw4FPoY4FNdLPko7dMopuKYtMFg",
1
],
[
"STM62gdsooY8PMfVCbfmEACMR8765zh4tzxzrmMwiB5MmL6BBpiPs",
1
],
[
"STM66QBmAmDbFPfZgADubhQr7wux5vjPKxqUvHfDotzj3UPGPXDfM",
1
],
[
"STM68kA4cf2FWav8NPvZ3VCECH1hi8g2QSCZsh2GzzqDsYtAnMYPK",
1
],
[
"STM6C2Lsy6wYNaGVESD3QZsgDnGCGQxVFeo9gttbhCqbbb2Evkp2Y",
1
],
[
"STM6DDLsiLY4Hf8vEkm9Z9RRykUhkZMwZuweG7MYhJSTv6XAohUEK",
1
],
[
"STM6DhX9Xmtj4vwJfdPuPSCJvdjzQPWqtD63owLZszBdhw58hNcmf",
1
],
[
"STM6FJSPJHpyfG93z6MiK9DA2uVUn97y19h44evf9sWNwMnV8b4Tu",
1
],
[
"STM6H9nfMsCdbthBLDFQAKHkASUr4M6i5qzDm3S2RicajHwuCUmUz",
1
],
[
"STM6V2cPXD8PrZCtCGpFX5fBwSuD6yF3xeDbzmohSs62VsdvxAy4x",
1
],
[
"STM6XGhvfH1RSvVPLjk4fom6h7ffvh78XDtzKzQs8mshHnykWkHMz",
1
],
[
"STM6a5Nzsc7pZJjp3FRbGe1dK5TW8ttMkKYsndTHZnfKw7u1m5oqG",
1
],
[
"STM6aHqhdQNJVHpZ9TKGgks351FE5MSzzqyNfxYnetHNG3h2J8bsY",
1
],
[
"STM6dd43qaCWXGqbBbKWLK4bDfrpt4YoTwoUUsA7f1fh628dXGoiP",
1
],
[
"STM6i3W78RoZRU7snEJHG3ViqBkqiY32DSCB9mQQVDGZmRp2BdNvC",
1
],
[
"STM6i7k75ADDnwW3N5FGNPpXC4ipDg9ThwcV5f7medMKQaU4pudyr",
1
],
[
"STM6rbjX6cTw48wZpUyWM5KmzJJ4EMPCgDeU7SAixYrAwwpzL3bxS",
1
],
[
"STM6sdKrA3R1fV4QUChhTFXPB82oBW1ufJoxjxsAbYPpKs7Q3pxr4",
1
],
[
"STM6uLwZAXS6urHx1TmcCxThrG6oFoWgLUwsLZhPxQa4GnfpZ8Gka",
1
],
[
"STM6uRchNpg8oRyUyoFsdTxvuU7WpaNYum4cT6duHAjUGdfFdEKhZ",
1
],
[
"STM6xACU35hf6gmAGfhpKjqGcRv3e8HYXo3riG5CbxF8z59Awidvy",
1
],
[
"STM71V7tfo3CuUm5MNfeYjX1szQS45znWPBh1JExXmrHgU5DSGXxW",
1
],
[
"STM74P2mgetcPgHB4w3jYaEuHaE6htuLSKPq6F4ZKxa1UTvcqnwiX",
1
],
[
"STM75N5f5bMzHzLiCV6wKvSnkoajWZXQJgA7qycznMp14VQiVPHuH",
1
],
[
"STM7Cfu3HZZEucHu9hcA2tBNA4bBUUWWjKdVVqGDKwZEpDM1wpEgS",
1
],
[
"STM7F2FZAv6ZfWsLoDg6oVarP9oKxmNEmJ67j6f74XGmeyirene5x",
1
],
[
"STM7N5pVrWzPtmjZoUqakRD4iqPhf5d6hbnAx74JLsJNH2CmjnSYL",
1
],
[
"STM7QPQQ6D8jNN5U2TEzpVH3Q2848ecTXzE6w93rRgfdHTbdbQqqH",
1
],
[
"STM7SU2ZSAJGuRqJjVALMXfiuJgXMBkKTeK1zwtHajqM6yEd7jHuZ",
1
],
[
"STM7SXSn7rkRErdiR8BnhTUEXnfiqr2nevwjhHmZ7iVMpn8DuxA68",
1
],
[
"STM7TrSwQM7FGeiytbYpVJLE96qCPjXA8ZpYVHWH4kiaVkwCnKzKp",
1
],
[
"STM7UTrrLFquSwaLMkJkyvt44i6nGnQGyQGW8K2vjaT1TCw7t5Wjm",
1
],
[
"STM7XHyvqP7NwWZ8Ft3zGfr2oTQ35zanmQSzG8spyydLwG3xX8F3c",
1
],
[
"STM7XwYmNSkN3xFe5TeENWjzbz4hy8Lz9XzwJP3NvrdFKwHG3hF1b",
1
],
[
"STM7edo93354X8UVTqNXEZRPR48YKgHVE4Fgf5JQbXJxYtHvjhr1x",
1
],
[
"STM7hYhvDdWbFRB3L6jgj13jFEvtwdsbdCJnP5pxh6og2YqLH7Gu6",
1
],
[
"STM7t6XnMzLSH8phY9AY6vsxLUbawmMwAMLFZqP2LcoJFMG7Wue57",
1
],
[
"STM7wCGWxdXMDq47Wsad9mkaxYgBPfqXN43B5K7AhMmp8JHrmTaGo",
1
],
[
"STM7xUGhNipU9FKybaZTuFpPv9vtS873x5aDan1Pt8svUJYZiMS7a",
1
],
[
"STM82JZUq2zMUfhhvQvYCorLgUdYuQwt6iXvdew5ThXMAUSyjNEoZ",
1
],
[
"STM84ey7nf3VM7j87bxuqQJQYbPgE9b1VDAcHYgtkTKRfY47NZVQm",
1
],
[
"STM8AnBmk5uAS5pWbok325FBZM7u8AbXpnQ8be3s1S8rsmYAnWVfp",
1
],
[
"STM8H65ShwA2iG1986FPMBkrYNEexQGJsirZstB48QgiJtMFvByeT",
1
],
[
"STM8PoAYdLuwacRiMCUMASvcyY74zrU5tVm7MuWdyVoRkP5TAQeXh",
1
],
[
"STM8UAUfKoMGnhoK7yD6teXHoUafHwgPmcLX8kT3wFqSSVYvrMPMx",
1
],
[
"STM8a5Qj5XSppRb6qjUthq5WuSBsRY2vGJ9occp9CZZ7rfvUAXFMD",
1
],
[
"STM8b4ycgYEFbAnPxcHAkqGij27qEPKihmATB6HdMA5Z157rBFDVS",
1
],
[
"STM8fHPtUMWdk26LngMRap1nAVZc8STQ1bgaRftKCQUiN7RaYBSX9",
1
],
[
"STM8fReN7Bnb6ecRGRVpFVLKEufyUbypZ8MDHcyXSrqhhwyAEM7ji",
1
],
[
"STM8gPJtitsyiRRmrkS1MSiG55d3WntfoAugGEXyNCnFbCPvXyKxp",
1
],
[
"STM8jThuCTSRMtuuTdN8QTnvXTyZjzVFbeTMtK3zAMDjtQ4EmVRxz",
1
],
[
"STM8jjJFbDszEDGrARLjDDrZuuL2iG4k1Xn3mxHrJS34SpCoCnaA9",
1
]
],
"weight_threshold":1
},
"balance":{
"amount":"19799",
"nai":"@@000000021",
"precision":3
},
"can_vote":true,
"comment_count":0,
"created":"2017-05-27T15:32:21",
"curation_rewards":1259,
"delegated_vesting_shares":{
"amount":"2030000000",
"nai":"@@000000037",
"precision":6
},
"id":171090,
"is_smt":false,
"json_metadata":"{\"profile\":{\"name\":\"HelloSteem!\",\"signature\":\"Hello World!\",\"dtalk_public_key\":\"8Yk2lMncEilOJ3JEjTndDOXz6PLkSgxUIOC0EIUXqoU.UyyD67WGkF04-KCikJMxLvmk4oAu--M378CdAr27DAI\"}}",
"last_account_recovery":"2017-06-02T17:25:03",
"last_account_update":"2018-07-23T21:13:45",
"last_owner_update":"2017-06-02T17:25:03",
"last_post":"2018-07-30T12:04:21",
"last_root_post":"2018-07-30T12:04:21",
"last_vote_time":"2018-07-30T12:04:21",
"lifetime_vote_count":0,
"memo_key":"STM5bGSQZNZqUuxxuRpJs2P662ouCLMdnwtP36MvUX453Bn5ePvr5",
"mined":false,
"name":"hellosteem",
"next_vesting_withdrawal":"2018-08-20T17:24:48",
"owner":{
"account_auths":[
],
"key_auths":[
[
"STM5z3YriE9Jf3vX3tSVcUuU9Ug57QtEY7pgbsKTu6AdnzbfrsEK9",
1
]
],
"weight_threshold":1
},
"post_count":990,
"posting":{
"account_auths":[
[
"bsteem",
1
],
[
"busy-mobile",
1
],
[
"busy.app",
1
],
[
"dtube.app",
1
],
[
"esteem-app",
1
],
[
"fabien",
1
],
[
"partiko-steemcon",
1
],
[
"sisilafamille",
1
],
[
"steemguest",
1
],
[
"steemprojectsapp",
1
],
[
"utopian.app",
1
],
[
"wisevote.app",
1
]
],
"key_auths":[
[
"STM6PiQjjEoF6N2hDfzSMLUw4qLebjQuyk9nnLBppNaZvX5qUkh8A",
1
]
],
"weight_threshold":1
},
"posting_rewards":12060,
"proxied_vsf_votes":[
0,
0,
0,
0
],
"proxy":"",
"received_vesting_shares":{
"amount":"0",
"nai":"@@000000037",
"precision":6
},
"recovery_account":"fabien",
"reset_account":"null",
"reward_sbd_balance":{
"amount":"0",
"nai":"@@000000013",
"precision":3
},
"reward_steem_balance":{
"amount":"0",
"nai":"@@000000021",
"precision":3
},
"reward_vesting_balance":{
"amount":"0",
"nai":"@@000000037",
"precision":6
},
"reward_vesting_steem":{
"amount":"0",
"nai":"@@000000021",
"precision":3
},
"savings_balance":{
"amount":"0",
"nai":"@@000000021",
"precision":3
},
"savings_sbd_balance":{
"amount":"0",
"nai":"@@000000013",
"precision":3
},
"savings_sbd_last_interest_payment":"2017-12-08T04:54:03",
"savings_sbd_seconds":"0",
"savings_sbd_seconds_last_update":"2017-12-08T04:54:03",
"savings_withdraw_requests":0,
"sbd_balance":{
"amount":"2657",
"nai":"@@000000013",
"precision":3
},
"sbd_last_interest_payment":"2018-07-28T13:47:33",
"sbd_seconds":"0",
"sbd_seconds_last_update":"2018-07-28T13:47:33",
"to_withdraw":2435811079,
"vesting_shares":{
"amount":"4885559226",
"nai":"@@000000037",
"precision":6
},
"vesting_withdraw_rate":{
"amount":"187370083",
"nai":"@@000000037",
"precision":6
},
"voting_power":9800,
"withdraw_routes":0,
"withdrawn":1124220498,
"witnesses_voted_for":0
}
],
"witnesses":[
......
......@@ -134,12 +134,12 @@ class TxgenTest(unittest.TestCase):
"upbitsteemhot", "blocktrades", "steemit2", "ned", "holiday",
"imadev", "muchfun", "poloniex", "gopax-deposit", "dan",
"bithumb.sunshine", "ben", "dantheman", "openledger-dex", "bittrex",
"huobi-withdrawal", "korbit3"
"huobi-withdrawal", "korbit3", "hellosteem"
}
self.assertEqual(account_stats["account_names"], expected_account_names)
self.assertEqual(account_stats["total_vests"], 103927115336403598)
self.assertEqual(account_stats["total_steem"], 60859712641)
self.assertEqual(account_stats["total_vests"], 103927120221962824)
self.assertEqual(account_stats["total_steem"], 60859732440)
def test_get_proportions(self):
shutil.copyfile("test-snapshot.json", "/tmp/test-snapshot.json")
......@@ -154,7 +154,7 @@ class TxgenTest(unittest.TestCase):
self.assertEqual(proportions["min_vesting_per_account"], 1)
self.assertEqual(proportions["vest_conversion_factor"], 1469860)
self.assertEqual(proportions["steem_conversion_factor"], 776237988251)
self.assertEqual(proportions["steem_conversion_factor"], 776237928593)
def test_create_accounts(self):
shutil.copyfile("test-snapshot.json", "/tmp/test-snapshot.json")
......@@ -203,6 +203,12 @@ class TxgenTest(unittest.TestCase):
for op in account["operations"]:
value = op["value"]
self.assertIn(["tnman", 1], value["owner"]["account_auths"])
self.assertLessEqual(len(value["owner"]["account_auths"]), txgen.STEEM_MAX_AUTHORITY_MEMBERSHIP)
self.assertLessEqual(len(value["active"]["account_auths"]), txgen.STEEM_MAX_AUTHORITY_MEMBERSHIP)
self.assertLessEqual(len(value["posting"]["account_auths"]), txgen.STEEM_MAX_AUTHORITY_MEMBERSHIP)
self.assertLessEqual(len(value["owner"]["key_auths"]), txgen.STEEM_MAX_AUTHORITY_MEMBERSHIP)
self.assertLessEqual(len(value["active"]["key_auths"]), txgen.STEEM_MAX_AUTHORITY_MEMBERSHIP)
self.assertLessEqual(len(value["posting"]["key_auths"]), txgen.STEEM_MAX_AUTHORITY_MEMBERSHIP)
def test_build_actions(self):
shutil.copyfile("test-snapshot.json", "/tmp/test-snapshot.json")
......@@ -214,7 +220,7 @@ class TxgenTest(unittest.TestCase):
self.assertEqual(args["txgen:semver"], "0.2")
self.assertEqual(args["txgen:transactions_per_block"], 40)
self.assertIsNotNone(args["epoch:created"])
self.assertEqual(args["actions:count"], 60)
self.assertEqual(args["actions:count"], 63)
self.assertGreater(args["recommend:miss_blocks"], 28968013)
self.assertEqual(args["snapshot:semver"], "0.2")
self.assertEqual(args["snapshot:origin_api"], "http://calculon.local")
......
......@@ -312,9 +312,9 @@ def update_accounts(account_stats, conf, keydb, silent=True):
new_posting_auth["account_auths"].append([tnman, cur_posting_auth["weight_threshold"]])
# substitute prefix for key_auths
new_owner_auth["key_auths"] = [["TST"+k[3:], w] for k, w in new_owner_auth["key_auths"]]
new_active_auth["key_auths"] = [["TST"+k[3:], w] for k, w in new_active_auth["key_auths"]]
new_posting_auth["key_auths"] = [["TST"+k[3:], w] for k, w in new_posting_auth["key_auths"]]
new_owner_auth["key_auths"] = [["TST"+k[3:], w] for k, w in new_owner_auth["key_auths"][:STEEM_MAX_AUTHORITY_MEMBERSHIP]]
new_active_auth["key_auths"] = [["TST"+k[3:], w] for k, w in new_active_auth["key_auths"][:STEEM_MAX_AUTHORITY_MEMBERSHIP]]
new_posting_auth["key_auths"] = [["TST"+k[3:], w] for k, w in new_posting_auth["key_auths"][:STEEM_MAX_AUTHORITY_MEMBERSHIP]]
ops = [{"type" : "account_update_operation", "value" : {
"account" : a["name"],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment