Exemplo n.º 1
0
def forge_entrypoint(entrypoint) -> bytes:
    """Encode Michelson contract entrypoint into the byte form.

    :param entrypoint: string
    """
    if entrypoint in reserved_entrypoints:
        return reserved_entrypoints[entrypoint]
    else:
        return b'\xff' + forge_array(entrypoint.encode(), len_bytes=1)
Exemplo n.º 2
0
def forge_transaction(content: Dict[str, Any]) -> bytes:
    res = forge_nat(operation_tags[content['kind']])
    res += forge_address(content['source'], tz_only=True)
    res += forge_nat(int(content['fee']))
    res += forge_nat(int(content['counter']))
    res += forge_nat(int(content['gas_limit']))
    res += forge_nat(int(content['storage_limit']))
    res += forge_nat(int(content['amount']))
    res += forge_address(content['destination'])

    if has_parameters(content):
        res += forge_bool(True)
        res += forge_entrypoint(content['parameters']['entrypoint'])
        res += forge_array(forge_micheline(content['parameters']['value']))
    else:
        res += forge_bool(False)

    return res
Exemplo n.º 3
0
 def activate_protocol(
     cls,
     protocol_hash: str,
     parameters: Dict[str, Any],
     context: ExecutionContext
 ) -> 'BlockHeader':
     prev_fitness = context.shell.head.header()['fitness']  # type: ignore
     protocol_data = {
         "content": {
             "command": "activate",
             "hash": protocol_hash,
             "fitness": bump_fitness(prev_fitness),
             "protocol_parameters": forge_array(bson.dumps(parameters)).hex(),
         }
     }
     return BlockHeader(
         context=context,
         protocol_data=protocol_data,
     )
Exemplo n.º 4
0
    def activate_protocol(cls, protocol_hash: str, parameters: Dict[str, Any], context: ExecutionContext) -> 'BlockHeader':
        """Create call to bake genesis block with specified parameters

        :param protocol_hash: protocol hash (ex. PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i)
        :param parameters: protocol parameters
        :param context: execution context
        """
        prev_fitness = context.shell.head.header()['fitness']  # type: ignore
        protocol_data = {
            "content": {
                "command": "activate",
                "hash": protocol_hash,
                "fitness": bump_fitness(prev_fitness),
                "protocol_parameters": forge_array(bson.dumps(parameters)).hex(),
            }
        }
        return BlockHeader(
            context=context,
            protocol_data=protocol_data,
        )
Exemplo n.º 5
0
def forge_failing_noop(content: Dict[str, Any]) -> bytes:
    res = forge_nat(operation_tags[content['kind']])
    res += forge_array(content['arbitrary'].encode())
    return res
Exemplo n.º 6
0
def forge_endorsement_with_slot(content: Dict[str, Any]) -> bytes:
    res = forge_nat(operation_tags[content['kind']])
    res += forge_array(forge_inline_endorsement(content['endorsement']))
    res += forge_int16(content['slot'])
    return res
Exemplo n.º 7
0
def forge_fitness(fitness: List[str]) -> bytes:
    return forge_array(b''.join(
        map(lambda x: forge_array(bytes.fromhex(x)), fitness)))
Exemplo n.º 8
0
def forge_failing_noop(content):
    res = forge_nat(operation_tags[content['kind']])
    res += forge_array(content['arbitrary'].encode())
    return res