コード例 #1
0
 def _save_claims(transaction):
     content_claims_to_update = []
     for claim_info in claim_infos:
         outpoint = "%s:%i" % (claim_info['txid'], claim_info['nout'])
         claim_id = claim_info['claim_id']
         name = claim_info['name']
         amount = lbc_to_dewies(claim_info['amount'])
         height = claim_info['height']
         address = claim_info['address']
         sequence = claim_info['claim_sequence']
         try:
             certificate_id = claim_info['value'].get(
                 'publisherSignature', {}).get('certificateId')
         except AttributeError:
             certificate_id = None
         try:
             if claim_info['value'].get('stream', {}).get(
                     'source', {}).get('sourceType') == "lbry_sd_hash":
                 source_hash = claim_info['value'].get(
                     'stream', {}).get('source', {}).get('source')
             else:
                 source_hash = None
         except AttributeError:
             source_hash = None
         serialized = claim_info.get('hex') or binascii.hexlify(
             smart_decode(claim_info['value']).serialized).decode()
         transaction.execute(
             "insert or replace into claim values (?, ?, ?, ?, ?, ?, ?, ?, ?)",
             (outpoint, claim_id, name, amount, height, serialized,
              certificate_id, address, sequence))
         # if this response doesn't have support info don't overwrite the existing
         # support info
         if 'supports' in claim_info:
             support_callbacks.append(
                 (claim_id, claim_info['supports']))
         if not source_hash:
             continue
         stream_hash = transaction.execute(
             "select file.stream_hash from stream "
             "inner join file on file.stream_hash=stream.stream_hash where sd_hash=?",
             (source_hash, )).fetchone()
         if not stream_hash:
             continue
         stream_hash = stream_hash[0]
         known_outpoint = transaction.execute(
             "select claim_outpoint from content_claim where stream_hash=?",
             (stream_hash, ))
         known_claim_id = transaction.execute(
             "select claim_id from claim "
             "inner join content_claim c3 ON claim.claim_outpoint=c3.claim_outpoint "
             "where c3.stream_hash=?", (stream_hash, ))
         if not known_claim_id:
             content_claims_to_update.append((stream_hash, outpoint))
         elif known_outpoint != outpoint:
             content_claims_to_update.append((stream_hash, outpoint))
     for stream_hash, outpoint in content_claims_to_update:
         self._save_content_claim(transaction, outpoint, stream_hash)
         if stream_hash in self.content_claim_callbacks:
             update_file_callbacks.append(
                 self.content_claim_callbacks[stream_hash]())
コード例 #2
0
 def _save_support(transaction):
     transaction.execute("delete from support where claim_id=?", (claim_id, ))
     for support in supports:
         transaction.execute(
             "insert into support values (?, ?, ?, ?)",
             ("%s:%i" % (support['txid'], support['nout']), claim_id, lbc_to_dewies(support['amount']),
              support.get('address', ""))
         )
コード例 #3
0
def calculate_effective_amount(
        amount: str,
        supports: typing.Optional[typing.List[typing.Dict]] = None) -> str:
    return dewies_to_lbc(
        lbc_to_dewies(amount) +
        sum([lbc_to_dewies(support['amount']) for support in supports]))