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)
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
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, )
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, )
def forge_failing_noop(content: Dict[str, Any]) -> bytes: res = forge_nat(operation_tags[content['kind']]) res += forge_array(content['arbitrary'].encode()) return res
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
def forge_fitness(fitness: List[str]) -> bytes: return forge_array(b''.join( map(lambda x: forge_array(bytes.fromhex(x)), fitness)))
def forge_failing_noop(content): res = forge_nat(operation_tags[content['kind']]) res += forge_array(content['arbitrary'].encode()) return res