def migrate_genesis_txn(base_dir): for suffix in ('sandbox', 'live', 'local'): old_domain_genesis = os.path.join( base_dir, 'transactions_{}'.format(suffix)) old_pool_genesis = os.path.join( base_dir, 'pool_transactions_{}'.format(suffix)) new_domain_genesis = os.path.join( base_dir, 'domain_transactions_{}_genesis'.format(suffix)) new_pool_genesis = os.path.join( base_dir, 'pool_transactions_{}_genesis'.format(suffix)) if os.path.exists(new_domain_genesis): os.remove(new_domain_genesis) if os.path.exists(new_pool_genesis): os.remove(new_pool_genesis) if os.path.exists(old_domain_genesis): old_ser = CompactSerializer(getTxnOrderedFields()) new_ser = JsonSerializer() with open(old_domain_genesis, 'r') as f1: with open(new_domain_genesis, 'w') as f2: for line in store_utils.cleanLines(f1): txn = old_ser.deserialize(line) txn = {k: v for k, v in txn.items() if v} txn = new_ser.serialize(txn, toBytes=False) f2.write(txn) f2.write('\n') os.remove(old_domain_genesis) if os.path.exists(old_pool_genesis): os.rename(old_pool_genesis, new_pool_genesis)
def _generate_genesis_files(self): pool_txns, domain_txns = self._split_pool_and_domain() # TODO make Ledger a context manager pl = TestNetworkSetup.init_pool_ledger(appendToLedgers=False, baseDir=self.base_dir, config=self.config, envName='test') pl_lines = self._add_and_stop(pool_txns, pl) dl = TestNetworkSetup.init_domain_ledger( appendToLedgers=False, baseDir=self.base_dir, config=self.config, envName='test', domainTxnFieldOrder=getTxnOrderedFields()) dl_lines = self._add_and_stop(domain_txns, dl) return adict(pool=adict(lines=pl_lines, root=pl.root_hash, size=pl.size), domain=adict(lines=dl_lines, root=dl.root_hash, size=dl.size))
def migrate_genesis_txn(base_dir): for suffix in ('sandbox', 'live', 'local'): old_domain_genesis = os.path.join( base_dir, 'transactions_{}'.format(suffix)) old_pool_genesis = os.path.join( base_dir, 'pool_transactions_{}'.format(suffix)) new_domain_genesis = os.path.join( base_dir, 'domain_transactions_{}_genesis'.format(suffix)) new_pool_genesis = os.path.join( base_dir, 'pool_transactions_{}_genesis'.format(suffix)) if os.path.exists(old_domain_genesis): os.remove(old_domain_genesis) if os.path.exists(old_pool_genesis): os.remove(old_pool_genesis) if os.path.exists(new_domain_genesis): old_ser = CompactSerializer(getTxnOrderedFields()) new_ser = JsonSerializer() with open(new_domain_genesis, 'r') as f1: with open(old_domain_genesis, 'w') as f2: for line in store_utils.cleanLines(f1): txn = new_ser.deserialize(line) txn = old_ser.serialize(txn) f2.write(txn) os.remove(new_domain_genesis) if os.path.exists(new_pool_genesis): os.rename(new_pool_genesis, old_domain_genesis)
def _generate_genesis_files(self): pool_txns, domain_txns = self._split_pool_and_domain() # TODO make Ledger a context manager pl = TestNetworkSetup.init_pool_ledger(appendToLedgers=False, baseDir=self.base_dir, config=self.config, envName='test') pl_lines = self._add_and_stop(pool_txns, pl) dl = TestNetworkSetup.init_domain_ledger( appendToLedgers=False, baseDir=self.base_dir, config=self.config, envName='test', domainTxnFieldOrder=getTxnOrderedFields()) dl_lines = self._add_and_stop(domain_txns, dl) return adict(pool=adict(lines=pl_lines, root=pl.root_hash, size=pl.size), domain=adict(lines=dl_lines, root=dl.root_hash, size=dl.size))
def migrate_all_hash_stores(node_data_directory): # the new hash store (merkle tree) will be recovered from the new transaction log after re-start # just delete the current hash store new_merkle_nodes = os.path.join(node_data_directory, '_merkleNodes') new_merkle_leaves = os.path.join(node_data_directory, '_merkleLeaves') new_merkle_nodes_bin = os.path.join( node_data_directory, '_merkleNodes.bin') new_merkle_leaves_bin = os.path.join( node_data_directory, '_merkleLeaves.bin') new_merkle_nodes_config_bin = os.path.join( node_data_directory, 'config_merkleNodes.bin') new_merkle_leaves_config_bin = os.path.join( node_data_directory, 'config_merkleLeaves.bin') if os.path.exists(new_merkle_nodes): shutil.rmtree(new_merkle_nodes) if os.path.exists(new_merkle_leaves): shutil.rmtree(new_merkle_leaves) if os.path.exists(new_merkle_nodes_bin): os.remove(new_merkle_nodes_bin) if os.path.exists(new_merkle_leaves_bin): os.remove(new_merkle_leaves_bin) if os.path.exists(new_merkle_nodes_config_bin): os.remove(new_merkle_nodes_config_bin) if os.path.exists(new_merkle_leaves_config_bin): os.remove(new_merkle_leaves_config_bin) # open new Ledgers fields = getTxnOrderedFields() _open_old_ledger(node_data_directory, config.poolTransactionsFile, 'pool', serializer=JsonSerializer()) _open_old_ledger(node_data_directory, config.domainTransactionsFile, 'domain', serializer=CompactSerializer(fields=fields)) _open_old_ledger(node_data_directory, config.configTransactionsFile, 'config', serializer=JsonSerializer())
def migrate_all_ledgers_for_node(node_data_directory): # using default ledger names _migrate_ledger(node_data_directory, config.poolTransactionsFile, config.poolTransactionsFile, serializer=JsonSerializer()) _migrate_ledger( node_data_directory, config.configTransactionsFile, config.configTransactionsFile, serializer=JsonSerializer()) # domain ledger uses custom CompactSerializer and old file name fields = getTxnOrderedFields() _migrate_ledger(node_data_directory, config.domainTransactionsFile.replace( 'domain_', ''), config.domainTransactionsFile, serializer=CompactSerializer(fields=fields))
def migrate_all_ledgers_for_node(node_data_directory): # using default ledger names _migrate_ledger(node_data_directory, config.poolTransactionsFile, config.poolTransactionsFile, serializer=JsonSerializer()) _migrate_ledger( node_data_directory, config.configTransactionsFile, config.configTransactionsFile, serializer=JsonSerializer()) # domain ledger uses custom CompactSerializer and old file name fields = getTxnOrderedFields() _migrate_ledger(node_data_directory, config.domainTransactionsFile.replace( 'domain_', ''), config.domainTransactionsFile, serializer=CompactSerializer(fields=fields))
def migrate_all_hash_stores(node_data_directory): # the new hash store (merkle tree) will be recovered from the new transaction log after re-start # just delete the current hash store new_merkle_nodes = os.path.join(node_data_directory, '_merkleNodes') new_merkle_leaves = os.path.join(node_data_directory, '_merkleLeaves') new_merkle_nodes_bin = os.path.join(node_data_directory, '_merkleNodes.bin') new_merkle_leaves_bin = os.path.join(node_data_directory, '_merkleLeaves.bin') new_merkle_nodes_config_bin = os.path.join(node_data_directory, 'config_merkleNodes.bin') new_merkle_leaves_config_bin = os.path.join(node_data_directory, 'config_merkleLeaves.bin') if os.path.exists(new_merkle_nodes): shutil.rmtree(new_merkle_nodes) if os.path.exists(new_merkle_leaves): shutil.rmtree(new_merkle_leaves) if os.path.exists(new_merkle_nodes_bin): os.remove(new_merkle_nodes_bin) if os.path.exists(new_merkle_leaves_bin): os.remove(new_merkle_leaves_bin) if os.path.exists(new_merkle_nodes_config_bin): os.remove(new_merkle_nodes_config_bin) if os.path.exists(new_merkle_leaves_config_bin): os.remove(new_merkle_leaves_config_bin) # open new Ledgers fields = getTxnOrderedFields() _open_old_ledger(node_data_directory, config.poolTransactionsFile, 'pool', serializer=JsonSerializer()) _open_old_ledger(node_data_directory, config.domainTransactionsFile, 'domain', serializer=CompactSerializer(fields=fields)) _open_old_ledger(node_data_directory, config.configTransactionsFile, 'config', serializer=JsonSerializer())
def domainTxnOrderedFields(): return getTxnOrderedFields()
def addTxnToGenesisFile(dir, file, txns, fields=getTxnOrderedFields()): ledger = create_genesis_txn_init_ledger(dir, file) for txn in txns: ledger.add(txn) ledger.stop()
def addTxnToGenesisFile(dir, file, txns, fields=getTxnOrderedFields()): ledger = create_genesis_txn_init_ledger(dir, file) for txn in txns: ledger.add(txn) ledger.stop()
def domainTxnOrderedFields(): return getTxnOrderedFields()
seq_no = 1 for td in trustee_defs: trustee_txn = Member.nym_txn( td.nym, verkey=td.verkey, role=TRUSTEE, seq_no=seq_no, protocol_version=genesis_protocol_version) seq_no += 1 domainLedger.add(trustee_txn) for sd in steward_defs: nym_txn = Member.nym_txn(sd.nym, verkey=sd.verkey, role=STEWARD, creator=trustee_defs[0].nym, seq_no=seq_no, protocol_version=genesis_protocol_version) seq_no += 1 domainLedger.add(nym_txn) domainLedger.stop() if __name__ == '__main__': DomainLedger.bootstrap_domain_ledger(getConfig(), ConfigHelper, getTxnOrderedFields())
d=adict() d.name = st d.nym = cf.get(st,'nym') d.fromnym= cf.get(st,'from') d.role = cf.get(st,'role') d.verkey = cf.get(st,'verkey') nyms.append(d) print(nyms) getConfig().NETWORK_NAME = args.network chroot = None config_helper = ConfigHelper(getConfig(),chroot = chroot) os.makedirs(config_helper.genesis_dir, exist_ok=True) genesis_dir = config_helper.genesis_dir keys_dir = config_helper.keys_dir print(keys_dir) domainLedger = init_domain_ledger(args.appendToLedgers, genesis_dir, getConfig(), getTxnOrderedFields()) domain(domainLedger , nyms) genesis_dir = setup_clibase_dir(getConfig(), args.network) keys_dir = os.path.join(genesis_dir, "keys") domainLedger = init_domain_ledger(args.appendToLedgers, genesis_dir, getConfig(), getTxnOrderedFields()) domain(domainLedger ,nyms)
def txnFieldOrdering(self): fields = getTxnOrderedFields() return updateFieldsWithSeqNo(fields)
from stp_core.common.util import adict import os import logging import argparse import string import random def generateSeed(): alphabet = string.ascii_uppercase + string.ascii_lowercase + string.digits return ''.join(random.choice(alphabet) for _ in range(32)) if __name__ == "__main__": logger = logging.getLogger() config = getConfig() txFieldOrder = getTxnOrderedFields() logging.FileHandler('/var/lib/indy.log') parser = argparse.ArgumentParser(description="Generate pool transactions") parser.add_argument('--node-names', required=True) parser.add_argument('--node-ips', required=True) parser.add_argument('--node-seeds', required=True) parser.add_argument('--node-port', default=9701) parser.add_argument('--client-port', default=9702) parser.add_argument('--append',
def txnFieldOrdering(self): fields = getTxnOrderedFields() return updateFieldsWithSeqNo(fields)
import logging from indy_network import NetworkSetup from indy_common.config_util import getConfig from indy_common.config_helper import ConfigHelper, NodeConfigHelper from indy_common.txn_util import getTxnOrderedFields portsStart = 9700 nodeParamsFileName = 'indy.env' if __name__ == "__main__": logger = logging.getLogger() logger.disabled = True NetworkSetup.bootstrapNodes(getConfig(), portsStart, nodeParamsFileName, getTxnOrderedFields(), ConfigHelper, NodeConfigHelper)
def bootstrap_domain_ledger(cls, config=getConfig(), config_helper_class=PConfigHelper, domainTxnFieldOrder=getTxnOrderedFields(), chroot: str = None): parser = argparse.ArgumentParser( description="Generate domain transactions") parser.add_argument('--trusteeDids', required=True, help='Trustee Dids, provide comma separated dids', type=cls._bootstrap_args_type_dids) parser.add_argument( '--trusteeVerkeys', required=True, help='Trustees Verkey, provide comma separated verification keys', type=cls._bootstrap_args_type_verkeys) parser.add_argument('--stewardDids', required=True, help='Stewards Dids, provide comma separated dids', type=cls._bootstrap_args_type_dids) parser.add_argument( '--stewardVerkeys', required=True, help='Stewards Verkey, provide comma separated verification keys', type=cls._bootstrap_args_type_verkeys) parser.add_argument('--network', required=False, help='Network name (default sandbox)', type=str, default="sandbox") parser.add_argument( '--appendToLedgers', help="Determine if ledger files needs to be erased " "before writing new information or not", action='store_true') args = parser.parse_args() if (len(args.trusteeDids) != len(args.trusteeVerkeys)): raise argparse.ArgumentTypeError( "Every Trustee did must need to have it's " "corresponding verification key and vice versa") if (len(args.stewardDids) != len(args.stewardVerkeys)): raise argparse.ArgumentTypeError( "Every Steward did must need to have it's " "corresponding verification key and vice versa") for line in fileinput.input(['/etc/indy/indy_config.py'], inplace=True): if 'NETWORK_NAME' not in line: print(line, end="") with open('/etc/indy/indy_config.py', 'a') as cfgfile: cfgfile.write("NETWORK_NAME = '{}'".format(args.network)) trustee_defs = cls.gen_def(args.trusteeDids, args.trusteeVerkeys) steward_defs = cls.gen_def(args.stewardDids, args.stewardVerkeys) cls.bootstrap_domain_ledger_core(config, args.network, args.appendToLedgers, domainTxnFieldOrder, trustee_defs, steward_defs, config_helper_class)