Esempio n. 1
0
File: state.py Progetto: AlephC/QRL
 def return_all_addresses(self):
     addresses = []
     address_state = qrl_pb2.AddressState()
     for k, v in self.db.RangeIter(b'Q', b'Qz'):
         address_state.ParseFromString(v)
         addresses.append([k, Decimal(address_state.balance)])
     return addresses
Esempio n. 2
0
File: State.py Progetto: som-dev/QRL
 def return_all_addresses(self):
     addresses = []
     for key, data in self._db.RangeIter(b'Q', b'Qz'):
         pbdata = qrl_pb2.AddressState()
         pbdata.ParseFromString(bytes(data))
         address_state = AddressState(pbdata)
         addresses.append(address_state)
     return addresses
Esempio n. 3
0
File: state.py Progetto: AlephC/QRL
 def total_coin_supply(self):
     # FIXME: This is temporary code. NOT SCALABLE. It is easy to keep a global count
     coins = Decimal(0)
     address_state = qrl_pb2.AddressState()
     for k, v in self.db.RangeIter(b'Q', b'Qz'):
         address_state.ParseFromString(v)
         coins = coins + Decimal(address_state.balance)        # FIXME: decimal math?
     return coins
Esempio n. 4
0
 def _get_address_state(self, address: bytes) -> AddressState:
     data = self._db.get_raw(address)
     if data is None:
         raise KeyError("{} not found".format(address))
     pbdata = qrl_pb2.AddressState()
     pbdata.ParseFromString(bytes(data))
     address_state = AddressState(pbdata)
     return address_state
Esempio n. 5
0
 def __init__(self, protobuf_block=None):
     self._data = protobuf_block
     self.tokens = defaultdict(int)
     if protobuf_block is None:
         self._data = qrl_pb2.AddressState()
     else:
         for key in self._data.tokens:
             self.tokens[str(key).encode()] = deepcopy(self._data.tokens[key])
Esempio n. 6
0
File: State.py Progetto: som-dev/QRL
 def get_address_state(self, address: bytes) -> AddressState:
     try:
         data = self._db.get_raw(address)
         pbdata = qrl_pb2.AddressState()
         pbdata.ParseFromString(bytes(data))
         address_state = AddressState(pbdata)
         return address_state
     except KeyError:
         return AddressState.get_default(address)
 def return_all_addresses(state: State) -> list:
     addresses = []
     for key, data in state._db.db:
         if key[0] != b'Q':
             continue
         pbdata = qrl_pb2.AddressState()
         pbdata.ParseFromString(bytes(data))
         address_state = AddressState(pbdata)
         addresses.append(address_state)
     return addresses
Esempio n. 8
0
File: state.py Progetto: AlephC/QRL
    def _save_address_state(self, address, state):
        # FIXME: internally keep data in byte form
        address_state = qrl_pb2.AddressState()
        address_state.address = address
        address_state.nonce = state[0]
        address_state.balance = state[1]

        # FIXME: Keep internally all hashes as bytearrays
        address_state.pubhashes.extend([ bytes(b) for b in state[2] ])

        self.db.put_raw(address.encode(), address_state.SerializeToString())
Esempio n. 9
0
File: node.py Progetto: jjgallow/QRL
    def get_address_state(self, address):
        # FIXME: Refactor.
        nonce, balance, pubhash_list = self.db_state.state_get_address(address)
        transactions = []

        address_state = qrl_pb2.AddressState(address=address,
                                             balance=balance,
                                             nonce=nonce,
                                             transactions=transactions)

        return address_state
Esempio n. 10
0
    def get_address_state(self, address):
        # FIXME: Refactor. Define concerns, etc.
        # FIXME: Unnecessary double conversion
        nonce, balance, pubhash_list = self.db_state.state_get_address(address)
        transactions = []

        address_state = qrl_pb2.AddressState(address=address,
                                             balance=balance,
                                             nonce=nonce,
                                             transactions=transactions)

        return address_state
Esempio n. 11
0
 def get_address(self, address: bytes) -> Optional[AddressState]:
     modified_address = self.state_code + address
     try:
         data = self._db.get_raw(modified_address)
         if data is None:
             raise KeyError(
                 "{} not found modified address".format(modified_address))
         pbdata = qrl_pb2.AddressState()
         pbdata.ParseFromString(bytes(data))
         address_state = AddressState(pbdata)
         return address_state
     except KeyError:
         return None
Esempio n. 12
0
File: state.py Progetto: AlephC/QRL
    def _get_address_state(self, address):
        address_state = qrl_pb2.AddressState()
        data = self.db.get_raw(address.encode())
        if data is None:
            raise KeyError("{} not found".format(address))

        address_state.ParseFromString(bytes(data))

        # FIXME: pubhashes is deserialized as a pb container but some methods want to make changes. Workaround
        tmp = [ h for h in address_state.pubhashes]

        return [address_state.nonce,
                address_state.balance,
                tmp]
Esempio n. 13
0
    def get_address_state(self, address: bytes) -> qrl_pb2.AddressState:
        if not self.address_is_valid(address):
            raise ValueError("Invalid Address")

        tmp_address_state = self.db_state.get_address(address)
        transaction_hashes = self.db_state.get_address_tx_hashes(address)
        address_state = qrl_pb2.AddressState(
            address=tmp_address_state.address,
            balance=tmp_address_state.balance,
            nonce=tmp_address_state.nonce,
            pubhashes=tmp_address_state.pubhashes,
            transaction_hashes=transaction_hashes)

        return address_state
Esempio n. 14
0
    def get_address(self, address):
        address_state = self._current_state.get_address(address)
        if address_state:
            return address_state

        for state_loader in self._state_loaders[-1::-1]:
            address_state = state_loader.get_address(address)
            if address_state:
                return address_state

        try:
            data = self._db.get_raw(address)
            pbdata = qrl_pb2.AddressState()
            pbdata.ParseFromString(bytes(data))
            address_state = AddressState(pbdata)
            return address_state
        except KeyError:
            return AddressState.get_default(address)
Esempio n. 15
0
 def __init__(self, protobuf_block=None):
     self._data = protobuf_block
     if protobuf_block is None:
         self._data = qrl_pb2.AddressState()