Ejemplo n.º 1
0
    def setUpClass(cls):
        cls.kusama_substrate = SubstrateInterface(
            url=settings.KUSAMA_NODE_URL,
            ss58_format=2,
            type_registry_preset='kusama')

        cls.polkadot_substrate = SubstrateInterface(
            url=settings.POLKADOT_NODE_URL,
            ss58_format=0,
            type_registry_preset='polkadot')

        cls.substrate_v13 = SubstrateInterface(url=settings.POLKADOT_NODE_URL,
                                               ss58_format=0,
                                               type_registry_preset='polkadot')

        module_path = os.path.dirname(__file__)
        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(module_path, 'fixtures', 'metadata_hex.json'))

        cls.metadata_v13_obj = cls.substrate_v13.runtime_config.create_scale_object(
            'MetadataVersioned',
            data=ScaleBytes(cls.metadata_fixture_dict['V13']))
        cls.metadata_v13_obj.decode()
        cls.substrate_v13.init_runtime()
        cls.substrate_v13.metadata_decoder = cls.metadata_v13_obj

        # Create new keypair
        mnemonic = Keypair.generate_mnemonic()
        cls.keypair = Keypair.create_from_mnemonic(mnemonic)
Ejemplo n.º 2
0
    def setUpClass(cls):
        cls.runtime_config = RuntimeConfigurationObject()
        cls.runtime_config.update_type_registry(load_type_registry_preset("metadata_types"))

        module_path = os.path.dirname(__file__)
        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(module_path, 'fixtures', 'metadata_hex.json')
        )
Ejemplo n.º 3
0
def connect():
    ws = create_connection("wss://2.dcb.my",
                           sslopt={"cert_reqs": ssl.CERT_NONE})
    custom_type_registry = load_type_registry_file("api/custom.json")

    substrate = SubstrateInterface(
        websocket=ws,
        ss58_format=42,
        type_registry_preset='substrate-node-template',
        type_registry=custom_type_registry)
    return substrate
Ejemplo n.º 4
0
    def setUpClass(cls):
        module_path = os.path.dirname(__file__)
        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(module_path, 'fixtures', 'metadata_hex.json'))
        RuntimeConfiguration().update_type_registry(
            load_type_registry_preset("metadata_types"))

        cls.metadata_decoder = RuntimeConfiguration().create_scale_object(
            'MetadataVersioned',
            data=ScaleBytes(cls.metadata_fixture_dict['V10']))
        cls.metadata_decoder.decode()
Ejemplo n.º 5
0
    def setUpClass(cls):
        module_path = os.path.dirname(__file__)
        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(module_path, 'fixtures', 'metadata_hex.json'))
        cls.runtime_config = RuntimeConfigurationObject(
            implements_scale_info=True)
        cls.runtime_config.update_type_registry(
            load_type_registry_preset("metadata_types"))

        cls.metadata_obj = cls.runtime_config.create_scale_object(
            'MetadataVersioned',
            data=ScaleBytes(cls.metadata_fixture_dict['V14']))
        cls.metadata_obj.decode()
Ejemplo n.º 6
0
def connect_to_substrate_node():
    try:
        substrate = SubstrateInterface(
            url="ws://127.0.0.1:9944",
            type_registry_preset="default",
            type_registry=load_type_registry_file("custom_types.json"),
        )
        return substrate
    except ConnectionRefusedError:
        print(
            "⚠️ No local Substrate node running, try running 'start_local_substrate_node.sh' first"
        )
        return None
Ejemplo n.º 7
0
    def __init__(self, db_session, type_registry='default', type_registry_file=None):
        self.db_session = db_session

        if type_registry_file:
            custom_type_registry = load_type_registry_file(type_registry_file)
        else:
            custom_type_registry = None

        self.substrate = SubstrateInterface(
            url=settings.SUBSTRATE_RPC_URL,
            type_registry=custom_type_registry,
            type_registry_preset=type_registry
        )
        self.metadata_store = {}
Ejemplo n.º 8
0
    def setUpClass(cls):
        cls.kusama_substrate = SubstrateInterface(
            url=settings.KUSAMA_NODE_URL,
            ss58_format=2,
            type_registry_preset='kusama')

        cls.polkadot_substrate = SubstrateInterface(
            url=settings.POLKADOT_NODE_URL,
            ss58_format=0,
            type_registry_preset='polkadot')

        module_path = os.path.dirname(__file__)
        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(module_path, 'fixtures', 'metadata_hex.json'))

        # Create new keypair
        mnemonic = Keypair.generate_mnemonic()
        cls.keypair = Keypair.create_from_mnemonic(mnemonic)
Ejemplo n.º 9
0
    def setUpClass(cls):
        module_path = os.path.dirname(__file__)

        # scale_info_defaults = load_type_registry_file(os.path.join(module_path, 'fixtures', 'scale_info_defaults.json'))

        cls.runtime_config = RuntimeConfigurationObject(ss58_format=42)
        cls.runtime_config.update_type_registry(
            load_type_registry_preset("metadata_types"))
        # cls.runtime_config.update_type_registry(scale_info_defaults)

        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(module_path, 'fixtures', 'metadata_hex.json'))

        cls.metadata_obj = cls.runtime_config.create_scale_object(
            'MetadataVersioned',
            data=ScaleBytes(cls.metadata_fixture_dict['V14']))
        cls.metadata_obj.decode()

        cls.runtime_config.add_portable_registry(cls.metadata_obj)
Ejemplo n.º 10
0
    def init_type_registry(self, custom_type_registry=None):

        if settings.TYPE_REGISTRY_FILE:
            type_registry = load_type_registry_file(settings.TYPE_REGISTRY_FILE)
        else:
            type_registry = {}

        if custom_type_registry:
            type_registry.update(custom_type_registry)

        self.substrate = SubstrateInterface(
            url=settings.SUBSTRATE_RPC_URL,
            ss58_format=settings.SUBSTRATE_ADDRESS_TYPE,
            type_registry_preset=settings.TYPE_REGISTRY,
            type_registry=custom_type_registry
        )

        if settings.DEBUG:
            print('Custom types at init: ', custom_type_registry)
            self.substrate.debug = True
Ejemplo n.º 11
0
from scalecodec.type_registry import load_type_registry_file
from substrateinterface import SubstrateInterface

substrate = SubstrateInterface(
    url='ws://161.97.148.207:7949',
    type_registry=load_type_registry_file(
        'app/type_registry/custom_types.json'),
)

# block_hash = substrate.get_chain_finalised_head()
block_hash = '0x3a00e167626324048e63034906df81b8a6c1402abcdc5f8ffa1b3ed045e3c048'

extrinsics = substrate.get_block_extrinsics(block_hash=block_hash)
print('Extrinsics:', [extrinsic.value for extrinsic in extrinsics])

events = substrate.get_events(block_hash)
print("Events:", events)

#print("Metadata: ",substrate.get_block_metadata(block_hash=block_hash))
print("Metadata: ", substrate.get_block_runtime_version(block_hash))
Ejemplo n.º 12
0
import json
from scalecodec.type_registry import load_type_registry_file
from substrateinterface import SubstrateInterface

substrate = SubstrateInterface(
    url='wss://ws.sora2.soramitsu.co.jp',
    type_registry_preset='default',
    type_registry=load_type_registry_file('custom_types.json'),
)

block_hash = substrate.get_block_hash(block_id=184001)
print(block_hash)

# Retrieve extrinsics in block
result = substrate.get_runtime_block(block_hash=block_hash,
                                     ignore_decoding_errors=True)
events = substrate.get_events(block_hash)

groupedEvents = {}
for event in events:
    event = str(event)
    eventdict = eval(event)
    idx = eventdict['extrinsic_idx']

    if idx in groupedEvents.keys():
        groupedEvents[idx].append(eventdict)
    else:
        groupedEvents[idx] = [eventdict]

# print(len(result['block']['extrinsics']))
# print(len(groupedEvents))
Ejemplo n.º 13
0
import json
import csv
from substrateinterface import SubstrateInterface, Keypair, SubstrateRequestException
from scalecodec.type_registry import load_type_registry_file

file_path = "./sample.json"
froot = './data/2ndclaim'
write_path = "./data/2ndclaim/summary.csv"

custom_type_registry = load_type_registry_file("types/plasm.json")

substrate = SubstrateInterface(url="wss://rpc.plasmnet.io",
                               address_type=5,
                               type_registry_preset='plasm',
                               type_registry=custom_type_registry)


def get_claim_id(params):
    return params[0]["value"]


def write_csv(event):
    with open(write_path, 'a') as f:
        writer = csv.writer(f)
        writer.writerow(event)


def get_claim_call(claim_id):
    print('get_claim_info', claim_id)
    try:
        claim_info = substrate.get_runtime_state(module='PlasmLockdrop',
Ejemplo n.º 14
0
 def __init__(self):
     RuntimeConfiguration().update_type_registry(load_type_registry_preset('default'))
     if TYPE_REGISTRY_PATH:
         RuntimeConfiguration().update_type_registry(load_type_registry_file(TYPE_REGISTRY_PATH))
     super(AccountDetailResource, self).__init__()
Ejemplo n.º 15
0
import json
from scalecodec.type_registry import load_type_registry_file
from substrateinterface import SubstrateInterface

substrate = SubstrateInterface(
    url='wss://mof3.sora.org/',
    type_registry_preset='default',
    type_registry=load_type_registry_file(
        '../harvester/app/type_registry/custom_types.json'),
)

block_hash = substrate.get_block_hash(block_id=3332543)

extrinsics = substrate.get_block(block_hash=block_hash)['extrinsics']

print('Extrinsincs:', json.dumps([e.value for e in extrinsics], indent=4))

events = substrate.get_events(block_hash)

print("Events:", json.dumps([e.value for e in events], indent=4))
Ejemplo n.º 16
0
    def setUpClass(cls):

        cls.substrate = SubstrateInterface(url='dummy',
                                           ss58_format=42,
                                           type_registry_preset='kusama')

        cls.metadata_fixture_dict = load_type_registry_file(
            os.path.join(os.path.dirname(__file__), 'fixtures',
                         'metadata_hex.json'))

        metadata_decoder = cls.substrate.runtime_config.create_scale_object(
            'MetadataVersioned')
        metadata_decoder.decode(
            ScaleBytes(cls.metadata_fixture_dict[cls.test_metadata_version]))

        cls.substrate.get_block_metadata = MagicMock(
            return_value=metadata_decoder)

        def mocked_request(method, params):
            if method == 'chain_getRuntimeVersion':
                return {
                    "jsonrpc": "2.0",
                    "result": {
                        "specVersion": 2023
                    },
                    "id": 1
                }
            elif method == 'chain_getHeader':
                return {
                    "jsonrpc": "2.0",
                    "result": {
                        "digest": {
                            "logs": []
                        },
                        "extrinsicsRoot":
                        "0xa94148d938c7b7976abf4272dca95724d7a74da2f3649ec0bd53dc3daaedda44",
                        "number":
                        "0x4abaaa",
                        "parentHash":
                        "0xe1781813275653a970b4260298b3858b36d38e072256dad674f7c786a0cae236",
                        "stateRoot":
                        "0xb6aa468385c82d15b343a676b3488d9f141ac100fc548bb8a546f27a7241c44a"
                    },
                    "id": 1
                }
            elif method == 'chain_getHead':
                return {
                    "jsonrpc": "2.0",
                    "result":
                    "0xe1781813275653a970b4260298b3858b36d38e072256dad674f7c786a0cae236",
                    "id": 1
                }

            raise NotImplementedError(method)

        cls.substrate.rpc_request = MagicMock(side_effect=mocked_request)

        cls.empty_substrate = SubstrateInterface(url='dummy',
                                                 ss58_format=42,
                                                 type_registry_preset='kusama')

        def mocked_request(method, params):

            return {'jsonrpc': '2.0', 'result': None, 'id': 1}

        cls.empty_substrate.rpc_request = MagicMock(side_effect=mocked_request)

        cls.error_substrate = SubstrateInterface(
            url='wss://kusama-rpc.polkadot.io',
            ss58_format=2,
            type_registry_preset='kusama')