Universal block_logs for testing
This MR contains three universal block_logs useful for testing. Each block_log contains accounts and witnesses wih the same names. with the difference that the accounts are created with different authorities depending on the block_log types:
Basic block_logs parameters:
- chain_id 24,
- active hardfork 28,
- block size 2MB ( 2097152 B ),
- active 21 witnesses ( witness-0 to witness-19 & initminer ),
- 2_000_000 kont ( names: account-0 to account-1999999 ),
- 100_000 comments ( creators: account-0 to account-199999 ),
- hive initial suply
400_000_000_000
( resources shared equally among all accounts ), - initial vesting
50_000_000_000
( resources shared equally among all accounts ), - hbd initial supply
30_000_000_000
( resources shared equally among all accounts ), - initial account creation fee =
0.001 HIVE
, - account creation fee after hardfork 20 =
3 HIVE
,
Witnesses private keys ( the same for each type of block_logs )
initminer: 5JNHfZYKGaomSFvd4NUdQ9qMcEAC43kujbfjueTHpVapX1Kzq2n
witness-0: 5K4aoZc1SQzfRvTfe9W5Yp32nN3tDgiSJ65ySePeG8g9RYJMVvL
witness-1: 5JVn8V3d5RgBhaiHrWo6YRiVJdWJVMv43wbsMNDtYsT7wvuBvDN
witness-2: 5JDKuxi3SzrJ96QQ6p2tB2zwCk9mMeJCDB65WaRdkHn5Nivkw2g
witness-3: 5JyiNt8h5FWb5kYbP2fxkAgx1NTWVN3igbbTSp6VqbRX3rsjPKU
witness-4: 5JeuU3PjbkfPUD2APWzS1mXKfufcBGiBQifjPdhUNFUoWBSWpre
witness-5: 5JoUz8LLCRrCQJrMLAAHfZwZnGa7cAyY2TLAsPfP1MU9MFqgHf8
witness-6: 5KJgoWcJbS2PoDJUaDnzywAG8TC4EB2EhSq3LtGFRR15xGdDLjb
witness-7: 5KeAGu8yWpyaDn8LxMub2Xd5dWDd5bLE7bgyUCPASc7at5hUZAX
witness-8: 5KMewQ4yv6FxyKSYac9EqaAdaJAeW4PPW3jkVetA29vnH1iEfTb
witness-9: 5JRywXzcawejhNCrLvy8m1oqrVFapRRATnMAMr4spHhj6x8auBf
witness-10: 5HpvDkxDkXvDN7diHvz2oVRZyPxQPbTLYx3rYaFLGvZTKVNpaGg
witness-11: 5KePhGuSqjm8xrgg9ZTRN7ukbHRPRuECSBvQvvUZdgjNmxcqSyk
witness-12: 5JfJqtA182G69VYECM89njRdi35zzbBuAYUnD4TyWH2tS3xpG4F
witness-13: 5K32YvjWZuzEcuaExL8vf7E8nMu5h18dde8QUuwMZGbArV1siDu
witness-14: 5KdEt2u4MkADyDywBs82KDjMLUnj86tVRHxYyMzfC4npXe1XNZg
witness-15: 5Hz27CtQFUXzsBswBdZPax1QdBGmwtEimwamToFY7ukFDaEeTri
witness-16: 5J9YwFnf9CqoH2St5Pa4zTvmbJMgSX66NXsatvbpDMQKjUpz62F
witness-17: 5HtHJLNzo6Knau92XwgnoHdkuMNaJptrx1v34znar431UszB8Ea
witness-18: 5JFmmgVMq5X57CxZuWKFQMdvgJeHsNg4dWpKbBs7HxBLxUMx9Rw
witness-19: 5J9iu9kZzEjF2pBv2FNXndjf3EFw9tYxKmrYdpiFMA9pPBVAvrm
Exemplary comment
[
"comment",
{
"author": account_name, # account name from account-0 to account-99999
"body": random_text, # from 100 to 500 characters
"json_metadata": "{}",
"parent_author": "",
"parent_permlink": f"category-{account_name}", # same account name as field "author"
"permlink": f"permlink-{account_name.split('-')[1]}", # e.g. permlink-99
"title": f"title-{account_name}", # title-account-99
}
]
Open-signature
The accounts do not have set keys, the weight threshold is set to 0
. You can sign transactions without a key.
OwnerAuthority(weight_threshold=0, account_auths=[], key_auths=[])
ActiveAuthority(weight_threshold=0, account_auths=[], key_auths=[])
PostingAuthority(weight_threshold=0, account_auths=[], key_auths=[])
# Private Keys
{
'owner': [],
'active': [],
'posting': [],
}
Single-signature
The accounts set only one key for posting, active and owner authority with weight threshold 1
, a single-key signature is required to broadcast the transaction.
PostingAuthority(weight_threshold=1, account_auths=[], key_auths=[('STM6VJuSwgXEZ8btuoYC3YjXPt6CGDK6WXeTjgMADLTwWEqin7AYC', 1)])
ActiveAuthority(weight_threshold=1, account_auths=[], key_auths=[('STM5nfmyEuBkUUXMmGAEqj7sXAkqPF5dZNmeegwyekDc2UTheC6YW', 1)])
OwnerAuthority(weight_threshold=1, account_auths=[], key_auths=[('STM7uM29oD8Y6YZZAazU7cZM3YRpZphhfQWEajc7JQUCn3BJvdVw1', 1)])
# Private Keys
{
'owner': ['5JP3EbwqTqkyCHpkECAANMd9SWbr4RApzbj8WkZj7JwezicsL6m'],
'active': ['5JqgqkuYAPx2xbSuttJst6Z1mTS3dJh7wdKi8b99MUcrsyT6fyM'],
'posting': ['5JfcKpyjeyZ4dqdVjXUHFzVQkvU2ZK1kLQS8SSBhEu7bdH5vdh4']
}
Multi-signature
Broadcasting a transaction in this type of block_log requires signing with a different number of keys depending on the required authority. Accounts have three types of weight threshold set for "owner": 3, "active": 6, "posting": 10.
OwnerAuthority(weight_threshold=3, account_auths=[], key_auths=[('STM5H4hmHbhLSSkTbZG2gf9jUGMGqwADbZ4xfG2D5zrYyYMdxJBoP', 1), ('STM5d99fpiG7YoV6ZiFyphrLnk72wag4G6TQAenVyAaqdwzPagpFL', 1), ('STM75wDJnLa9B5TfkmbqFQp9x3FYRJxeDHXv8RNM8NRzrP6C42pgL', 1)])
ActiveAuthority(weight_threshold=6 account_auths=[] key_auths=[('STM5G4AxkcCLe7Vurg4FGCgL4rKBXFJWLLMxSzp2LWG6aGixJyXLk', 1), ('STM5LHMhVTXkoWX6WRAyDhtSoCmLgL94RFmB98fF5aFQkkfERGZaz', 1), ('STM6SWL5kqswx6pEqtBDM4GTHwWnsDhQb94JskWrbzwDmpy8QWzDS', 1), ('STM74LejCncTortt2NFFC5dPcXjD1q3DaSqXRrAtwiDUxPHDj2H4y', 1), ('STM7mNaJ8hvqqHQc7drCwEZAJfAbeHsmdQLCY39Rod4JxcXLDoivk', 1), ('STM7xM8dT912gDWkUVdEnbGwTquvxmjWQ3BAnzcoqndhWRzaUyToX', 1)]
PostingAuthority(weight_threshold=10 account_auths=[] key_auths=[('STM5HKGeKFyFgrtvWdfjMppn42WGeusc7MhcDW7zZHTBNdwJnCgtn', 1), ('STM5nmmdzGkZrV7oXWRRyuTm9fcxTYYQJ2kxCNmgbxs9uGWpAK6ry', 1), ('STM61KJmM7hNXZTzi585rZFMaJ4QcbrZZhyHwW375uUiu48v6wf3b', 1), ('STM6hWdk9T3P5rQMGzaNrzmVQsubrVmLdcW5N4bwTCkCSQ3DrWEe9', 1), ('STM6i55HuryYKK3mhpkSSzpv8SbhbJpW86ZvSiTRyNJqBh2g2V4Cp', 1), ('STM6xesm2pYhEEah8Gse4WrWxnDyyrHzLYPuarCHFBm6zZP5Geqq3', 1), ('STM77Z8QSF7N8RSR8nuAAr81VABVhEk4dk4GbvRaYaTKSCyBMaBNR', 1), ('STM7Y9pcY8javCXLVxaHekzgAohY4r3JVTAA54noCh7VrG1AyM92E', 1), ('STM8H1Qg1V1RLvz5y9y7dKYtZVNjvMVQT6nUZhnqTafDiRSm6Kfiv', 1), ('STM8ZszAJsk9gAJCxUimvqo7RWXqWvZ2Qt9WW3sxHs3uqpfsZRJiD', 1)]
# Private Keys
{
'owner':
[
'5HuvBmD7bNmdcdBSx1wHNGVLUaKcbPRtjwkh4Vz9JFE1MLGMsPP',
'5J9iuWsKXK566hXzHA4D3BPyFifK3JphwiQ4cuo92UqXjjKAt7R',
'5KRoUjzQ5tJAVa6EfE9SgvqWK7336TPBypQXHWFABChVTrDh8nX',
],
'active':
[
'5J2fy1FoutB5UYJgAxVF3qWLVqNaZTCtg78ZaK1TTxCzdYqTEP4',
'5KhwBEMAhwpmTHD2WETDcB92gWSG9GdXVevvGj3coTdUVjJcHVn',
'5JpRi3FYim778JMaeQBVQwPsMd5U8FGirerSiiYus2hsRB277HD',
'5JFAiVLsXB5LG2ntrCNUUjD9Hr4oJvf4Lp3v8C6vCD3HchphtuV',
'5JUnx8u6PcYkQ5gjdmtkEKdFewtPRGFxyKBYjcbov1wnELw26uK',
'5JUuhBJuFjFAi8r4fAw4TL2jDzLr6gNPY52drfh6bo4az2kGm9Q',
],
'posting':
[
'5JGe2JSPajRMmAh1VJmoC1mM8oLxADXw5XB3h57XjgA4zRTZjGJ',
'5JTdmG2c2udBiorTZkENDVCfXgXJKy92d2caTm8kXcnfYiQCqAA',
'5JPnznv2f3k1dx6uxqP9bKDv8PrShQuZ9tnQ242zaK5v8Ktk2KL',
'5JvrAVQax5xxM8aSDBZaV1cGsrfsc6JGC58gPAgjedWXbwSVWgj',
'5JhycWS1MLnyeR5nvU1peJddG2ho5H6WN2kDS813Utdkdp8xJSN',
'5Huh6DuKYhkUFPmbt3k8dZGYU9t5brr35uYqV6Hfd9hqKF2Kmeg',
'5JkkX2XvpFeeQoGGgyiG7CQ7SftunMfJTzwYrx6subgguop1T7x',
'5Ju5hG9Qb4YrSgVVeSZ2H5TM5doFa3imdVFWTMoQ5gRiMpyTH6n',
'5HwRzZae8h2qsmtAzyHkKwffUCxYqJktTgSzJjurezz86fYZb3d',
'5K2DAwmDhEWYd6HRKCi6EFuKrFLAcVUi9nasSk1xQexN3p1Ecc3',
]
}
@ABW^
Service universal_block_logs on CI - three new jobs:
-
generate_universal_block_logs_and_save_image -> job with automatic start, based on
testnet_node_build
. Auto detect when generate_universal_block_logs.py was changed and generate new versions of block logs when it be necessery. Next creating docker image with generated universal_block_logs and save it to container registry (https://gitlab.syncad.com/hive/hive/container_registry/646), -
copy_universal_block_logs_to_cache -> pull docker image and copies block_logs to /cache/universal_block_logs. Files structure:
/cache/universal_block_logs
├── block_log_multi_sign
│ ├── alternate-chain-spec.json
│ ├── block_log
│ └── block_log.artifacts
├── block_log_open_sign
│ ├── alternate-chain-spec.json
│ ├── block_log
│ └── block_log.artifacts
└── block_log_single_sign
├── alternate-chain-spec.json
├── block_log
└── block_log.artifacts
- universal_block_log_tests -> tests based on generated block_logs. Each test copies block log to own
generated.../
files.