コード例 #1
0
ファイル: cleos.py プロジェクト: tyler2018/eosfactory
    def __init__(
            self, creator, name, owner_key, 
            active_key=None,
            permission=None,
            expiration_sec=None, 
            skip_signature=0, 
            dont_broadcast=0,
            forceUnique=0,
            max_cpu_usage=0,
            max_net_usage=0,
            ref_block=None,
            is_verbose=True
            ):

        if name is None: 
            name = account_name()
        interface.Account.__init__(self, name)

        self.owner_key = None # private keys
        self.active_key = None
        
        if active_key is None:
            active_key = owner_key        

        owner_key_public = interface.key_arg(
            owner_key, is_owner_key=True, is_private_key=False)
        active_key_public = interface.key_arg(
            active_key, is_owner_key=False, is_private_key=False)

        args = [
                interface.account_arg(creator), self.name, 
                owner_key_public, active_key_public
            ]

        args.append("--json")
        if not permission is None:
            p = interface.permission_arg(permission)
            for perm in p:
                args.extend(["--permission", perm])

        if expiration_sec:
            args.extend(["--expiration", str(expiration_sec)])
        if skip_signature:
            args.append("--skip-sign")
        if dont_broadcast:
            args.append("--dont-broadcast")
        if forceUnique:
            args.append("--force-unique")
        if max_cpu_usage:
            args.extend(["--max-cpu-usage-ms", str(max_cpu_usage)])
        if  max_net_usage:
            args.extend(["--max-net-usage", str(max_net_usage)])
        if  not ref_block is None:
            args.extend(["--ref-block", ref_block])

        _Cleos.__init__(
            self, args, "create", "account", is_verbose)
            
        self.json = GetAccount(self.name, is_verbose=False, is_info=False).json
        self.printself()
コード例 #2
0
ファイル: account.py プロジェクト: vectar31/eosfactory
    def __init__(self,
                 account_object_name,
                 name=None,
                 owner_key=None,
                 active_key=None,
                 verbosity=None):

        self.account_object_name = account_object_name
        if name is None:
            self.name = cleos.account_name()
        else:
            self.name = name

        if active_key is None:
            active_key = owner_key

        self.exists = False
        self.in_wallet_on_stack = False
        self.has_keys = not owner_key is None

        try:
            cleos.GetAccount.__init__(self,
                                      self.name,
                                      is_info=False,
                                      is_verbose=False)
        except errors.AccountDoesNotExistError:
            return

        self.exists = True
        if owner_key is None:
            self.owner_key = cleos.CreateKey(
                self.json["permissions"][1]["required_auth"]["keys"] \
                [0]["key"],
                is_verbose=0)
        else:  # an orphan account, private key is restored from cache
            self.owner_key = cleos.CreateKey(
                self.json["permissions"][1]["required_auth"]["keys"] \
                [0]["key"], interface.key_arg(
                    owner_key, is_owner_key=True, is_private_key=True),
                is_verbose=0)

        if active_key is None:
            self.owner_key = cleos.CreateKey(
                self.json["permissions"][0]["required_auth"]["keys"] \
                [0]["key"],
                is_verbose=0)
        else:  # an orphan account, private key is restored from cache
            self.active_key = cleos.CreateKey(
                self.json["permissions"][0]["required_auth"]["keys"] \
                [0]["key"], interface.key_arg(
                    active_key, is_owner_key=False, is_private_key=True),
                is_verbose=0)

        logger.TRACE('''
            * Account *{}* exists in the blockchain.
            '''.format(self.name))
コード例 #3
0
ファイル: cleos.py プロジェクト: tyler2018/eosfactory
    def __init__(self, key, is_verbose=True):
        public_key = interface.key_arg(key, is_owner_key=True, is_private_key=False)
        _Cleos.__init__(
            self, [public_key], "get", "accounts", is_verbose)

        self.names = self.json['account_names']
        self.printself()
コード例 #4
0
ファイル: cleos.py プロジェクト: tyler2018/eosfactory
    def __init__(self, key, wallet="default", is_verbose=True):
        key_private = interface.key_arg(
            key, is_owner_key=True, is_private_key=True)
        _Cleos.__init__(
            self, 
            ["--private-key", key_private, "--name", 
                interface.wallet_arg(wallet)],
            "wallet", "import", is_verbose)

        self.json["key_private"] = key_private
        self.key_private = key_private
        self.printself()
コード例 #5
0
    def remove_key(self, account_or_key):
        '''
        '''
        self.open_unlock()

        removed_keys = []
        account_name = None
        if isinstance(account_or_key, interface.Account):
            cleos.WalletRemove_key(interface.key_arg(account_or_key,
                                                     is_owner_key=True,
                                                     is_private_key=True),
                                   self.name,
                                   is_verbose=False)
            removed_keys.append(
                interface.key_arg(account_or_key,
                                  is_owner_key=True,
                                  is_private_key=False))

            cleos.WalletRemove_key(interface.key_arg(account_or_key,
                                                     is_owner_key=False,
                                                     is_private_key=True),
                                   self.name,
                                   is_verbose=False)
            removed_keys.append(
                interface.key_arg(account_or_key,
                                  is_owner_key=False,
                                  is_private_key=False))
        else:
            cleos.WalletRemove_key(interface.key_arg(account_or_key,
                                                     is_private_key=True),
                                   self.name,
                                   is_verbose=False)
            removed_keys.append(
                interface.key_arg(account_or_key, is_private_key=False))

        if account_name is None:
            if len(removed_keys) > 0:
                logger.TRACE(
                    '''
                    Removing key '{}' 
                    from the wallet '{}'
                    '''.format(removed_keys[0], self.name), verbosity)
        else:
            logger.TRACE('''
                Removing keys of the account '{}' from the wallet '{}'
                '''.format(account_name, self.name))

        wallet_keys = cleos.WalletKeys(is_verbose=False)

        for key in removed_keys:
            if key in wallet_keys.json:
                raise errors.Error('''
                Failed to remove key '{}' from the wallet '{}'
                '''.format(key, self.name))

        logger.TRACE('''
        * Cross-checked: all listed keys removed from the wallet.
        ''')
        return True
コード例 #6
0
ファイル: cleos.py プロジェクト: tyler2018/eosfactory
    def __init__(self, key, wallet, password, is_verbose=True):
        key_public = interface.key_arg(
            key, is_owner_key=True, is_private_key=False)

        _Cleos.__init__(
            self, 
            [key_public, "--name", interface.wallet_arg(wallet), 
                "--password", password], 
            "wallet", "remove_key", is_verbose)

        self.json["key_public"] = key_public
        self.key_public = key_public
        self.printself()
コード例 #7
0
    def __init__(self,
                 account,
                 table,
                 scope,
                 binary=False,
                 limit=10,
                 key="",
                 lower="",
                 upper="",
                 is_verbose=True):
        args = [interface.account_arg(account)]

        if not scope:
            scope = self.name
        else:
            try:
                scope_name = scope.name
            except:
                scope_name = scope

        args.append(scope_name)
        args.append(table)

        if binary:
            args.append("--binary")
        if limit:
            args.extend(["--limit", str(limit)])
        if key:
            args.extend([
                "--key",
                interface.key_arg(key,
                                  is_owner_key=False,
                                  is_private_key=False)
            ])
        if lower:
            args.extend(["--lower", lower])
        if upper:
            args.extend(["--upper", upper])

        _Cleos.__init__(self, args, "get", "table", is_verbose)

        self.printself()
コード例 #8
0
    def import_key(self, account_or_key):
        ''' Imports private keys into wallet.

        Return list of `cleos.WalletImport` objects

        Args:
            account_or_key (str or .interface.Key or .interface.Account):
                A private key to import. If *account_or_key* is an 
                .interface.Account object, both owner and active keys are 
                imported.
        '''
        self.open_unlock()
        imported_keys = []
        account_name = None
        if isinstance(account_or_key, interface.Account):
            account_name = account_or_key.name
            cleos.WalletImport(interface.key_arg(account_or_key,
                                                 is_owner_key=True,
                                                 is_private_key=True),
                               self.name,
                               is_verbose=False)
            imported_keys.append(
                interface.key_arg(account_or_key,
                                  is_owner_key=True,
                                  is_private_key=False))

            cleos.WalletImport(interface.key_arg(account_or_key,
                                                 is_owner_key=False,
                                                 is_private_key=True),
                               self.name,
                               is_verbose=False)
            imported_keys.append(
                interface.key_arg(account_or_key,
                                  is_owner_key=False,
                                  is_private_key=False))
            logger.TRACE('''
                * Importing keys of the account ``{}`` 
                    into the wallet ``{}``
                '''.format(account_name, self.name))
        else:
            cleos.WalletImport(interface.key_arg(account_or_key,
                                                 is_private_key=True),
                               self.name,
                               is_verbose=False)

            logger.TRACE('''
                * Importing keys into the wallet ``{}``
                '''.format(self.name))
            return True

        wallet_keys = cleos.WalletKeys(is_verbose=False)

        if len(imported_keys) == 0:
            raise errors.Error('''
                The list of imported keys is empty.
                ''')

        ok = True
        for key in imported_keys:
            if not key in wallet_keys.json:
                ok = False
                raise errors.Error('''
                Failed to import keys of the account '{}' into the wallet '{}'
                '''.format(account_name if account_name else "n/a", self.name))

        if ok:
            logger.TRACE('''
            * Cross-checked: all account keys are in the wallet.
            ''')
        return True
コード例 #9
0
    def __init__(
            self, creator, name, owner_key, active_key,
            stake_net, stake_cpu,
            permission=None,
            buy_ram_kbytes=0, buy_ram="",
            transfer=False,
            expiration_sec=30, 
            skip_signature=0, dont_broadcast=0, forceUnique=0,
            max_cpu_usage=0, max_net_usage=0,
            ref_block=None,
            is_verbose = 1
            ):

        stake_net = "{} EOS".format(stake_net)
        stake_cpu = "{} EOS".format(stake_cpu)
        
        if name is None: 
            name = account_name()
        interface.Account.__init__(self, name)

        self.owner_key = None # private keys
        self.active_key = None
        
        if active_key is None:
            active_key = owner_key

        args = [
            interface.account_arg(creator), self.name, 
                interface.key_arg(owner_key, is_owner_key=True, is_private_key=False), 
                interface.key_arg(active_key, is_owner_key=False, is_private_key=False)
            ]

        args.append("--json")
        args.extend([
            "--stake-net", stake_net, 
            "--stake-cpu", stake_cpu])
        if buy_ram_kbytes:
            args.extend(["--buy-ram-kbytes", str(buy_ram_kbytes)])
        if buy_ram:
            args.extend(["--buy-ram", str(buy_ram)])
        if transfer:
            args.extend(["--transfer"])
        if not permission is None:
            p = interface.permission_arg(permission)
            for perm in p:
                args.extend(["--permission", perm])
        if skip_signature:
            args.append("--skip-sign")
        if dont_broadcast:
            args.append("--dont-broadcast")
        if forceUnique:
            args.append("--force-unique")
        if max_cpu_usage:
            args.extend(["--max-cpu-usage-ms", str(max_cpu_usage)])
        if  max_net_usage:
            args.extend(["--max-net-usage", str(max_net_usage)])
        if  not ref_block is None:
            args.extend(["--ref-block", ref_block])

        cleos._Cleos.__init__(
            self, args, "system", "newaccount", is_verbose)
            
        self.json = cleos.GetAccount(
            self.name, is_verbose=0, is_info=False).json

        if self.is_verbose:
            print(self.__str__())