Source code for genlayer.std
"""
Blockchain specific functionality, that won't work without GenVM
and reexports form :py:mod:`genlayer.py` provided for convenience
"""
__all__ = (
'Lazy',
'MessageType',
'MessageRawType',
'wasi',
'advanced',
'calldata',
'private',
'public',
'Contract',
'contract_interface',
'ContractAt',
'deploy_contract',
'eth_contract',
'eq_principle_prompt_comparative',
'eq_principle_prompt_non_comparative',
'eq_principle_strict_eq',
'eq_principles',
'exec_prompt',
'get_webpage',
'message',
'message_raw',
'eth',
'storage',
'Event',
)
import typing
import os
import genlayer.py.eth as eth
import genlayer.py.calldata as calldata
import genlayer.std.advanced as advanced
import genlayer.std._wasi as wasi
from .events import Event
# reexports
from ..py.types import *
import genlayer.py.storage as storage
from ._internal.storage import STORAGE_MAN
storage.Root.MANAGER = STORAGE_MAN
from .eq_principles import *
from .nondet_fns import *
from .genvm_contracts import *
from .eth import *
from .annotations import *
from .msg import MessageRawType, message_raw as _message_raw_original
[docs]
class MessageType(typing.NamedTuple):
contract_address: Address
"""
Address of current Intelligent Contract
"""
sender_address: Address
"""
Address of this call initiator
"""
origin_address: Address
"""
Entire transaction initiator
"""
value: u256
chain_id: u256
"""
Current chain ID
"""
if os.getenv('GENERATING_DOCS', 'false') == 'true':
message_raw: MessageRawType = ... # type: ignore
"""
Raw message as parsed json
"""
message: MessageType = ... # type: ignore
"""
Represents fields from a transaction message that was sent
"""
else:
message_raw = _message_raw_original
message = MessageType(
contract_address=message_raw['contract_address'],
sender_address=message_raw['sender_address'],
origin_address=message_raw['origin_address'],
value=u256(message_raw['value']),
chain_id=u256(message_raw['chain_id']),
)