Skip to content

Commit

Permalink
Added Contract compatibility with MetadataV14 runtimes #133
Browse files Browse the repository at this point in the history
  • Loading branch information
arjanz committed Sep 28, 2021
1 parent fdcb33d commit f8b37fe
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 17 deletions.
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ requests>=2.21.0,<3
xxhash>=1.3.0,<3
pytest>=4.4.0

scalecodec~=1.0
scalecodec>=1.0.2,<2
py-sr25519-bindings~=0.1.2
py-ed25519-bindings~=0.1.2
py-bip39-bindings~=0.1.6
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@
'idna>=2.1.0,<4',
'requests>=2.21.0,<3',
'xxhash>=1.3.0,<3',
'scalecodec~=1.0',
'scalecodec>=1.0.2,<2',
'py-sr25519-bindings~=0.1.2',
'py-ed25519-bindings~=0.1.2',
'py-bip39-bindings~=0.1.6'
Expand Down
56 changes: 41 additions & 15 deletions substrateinterface/contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,18 +405,33 @@ def process_events(self):
self.__contract_events = []

for event in self.triggered_events:
if event.event_module.name == 'Contracts' and event.event.name == 'ContractEmitted':

# Create contract event
contract_event_obj = ContractEvent(
data=ScaleBytes(event.params[1]['value']),
runtime_config=self.substrate.runtime_config,
contract_metadata=self.contract_metadata
)
if self.substrate.implements_scaleinfo():
if event.value['module_id'] == 'Contracts' and event.value['event_id'] == 'ContractEmitted':
# Create contract event
contract_event_obj = ContractEvent(
data=ScaleBytes(event.value['attributes'][1]),
runtime_config=self.substrate.runtime_config,
contract_metadata=self.contract_metadata
)

contract_event_obj.decode()

self.__contract_events.append(contract_event_obj)
else:

if event.event_module.name == 'Contracts' and event.event.name == 'ContractEmitted':

# Create contract event
contract_event_obj = ContractEvent(
data=ScaleBytes(event.params[1]['value']),
runtime_config=self.substrate.runtime_config,
contract_metadata=self.contract_metadata
)

contract_event_obj.decode()
contract_event_obj.decode()

self.__contract_events.append(contract_event_obj)
self.__contract_events.append(contract_event_obj)

@property
def contract_events(self):
Expand Down Expand Up @@ -601,12 +616,23 @@ def deploy(self, keypair, endowment, gas_limit, constructor, args: dict = None,
raise ExtrinsicFailedException(result.error_message)

for event in result.triggered_events:
if event.event.name == 'Instantiated':
return ContractInstance(
contract_address=event.params[1]['value'],
metadata=self.metadata,
substrate=self.substrate
)

if self.substrate.implements_scaleinfo():

if event.value['event']['event_id'] == 'Instantiated':
return ContractInstance(
contract_address=event.value['event']['attributes'][1],
metadata=self.metadata,
substrate=self.substrate
)
else:

if event.event.name == 'Instantiated':
return ContractInstance(
contract_address=event.params[1]['value'],
metadata=self.metadata,
substrate=self.substrate
)

raise DeployContractFailedException()

Expand Down

0 comments on commit f8b37fe

Please sign in to comment.