Skip to content
Snippets Groups Projects
CCTx_Abstract_DLT_m1.bum 16.7 KiB
Newer Older
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Guzman Llambias's avatar
Guzman Llambias committed
<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.core.generated="false" org.eventb.emf.persistence.emf_id="_yPQfrL7uEe6laZimEYihUg" org.eventb.texttools.text_lastmodified="1706564327816" org.eventb.texttools.text_representation="machine CCTx_Abstract_DLT_m1 sees CCTx_Abstract_DLT_c1&#10;&#10;variables received_transactions triggered_events subscriptions gateway_pending_transactions received_cross_chain_transactions&#10;&#10;invariants&#10;  @inv1; received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS&#10;  @inv2; triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS&#10;  @inv3; subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS&#10;  @inv4; gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS&#10;  @inv6; received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS&#10;&#10;events&#10;  event INITIALISATION&#10;    then&#10;      @act1; received_transactions ≔ ∅&#10;      @act2; triggered_events ≔ ∅&#10;      @act3; subscriptions ≔ ∅&#10;      @act4; gateway_pending_transactions ≔ ∅&#10;      @act6; received_cross_chain_transactions ≔ ∅&#10;  end&#10;&#10;  event SUBSCRIBE_SMART_CONTRACT_EVENTS&#10;    where&#10;      @grd1; gateway ↦ source_smart_contract ∉ subscriptions // The gateway is not already subscribed to the smart contract events&#10;    then&#10;      @act1; subscriptions ≔ subscriptions  ∪ {gateway ↦ source_smart_contract} // The gateway is subscribed to listen to the smart contract events&#10;  end&#10;&#10;  event INITIATE_CROSS_CHAIN_TRANSACTION&#10;    any transaction&#10;    where&#10;      @grd1; transaction ∈ TRANSACTIONS&#10;      @grd3; transaction ∉ received_transactions[{source_smart_contract}]&#10;    then&#10;      @act1; received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction}&#10;  end&#10;&#10;  event PROCESS_CROSS_CHAIN_TRANSACTION&#10;    any transaction cross_chain_event&#10;    where&#10;      @grd1; source_smart_contract ↦ transaction ∈ received_transactions // The smart contract has a pending transaction to process&#10;      @grd2; cross_chain_event ∉ triggered_events[{source_smart_contract}] // The smart contract will allways trigger a new event&#10;    then&#10;      @act1; triggered_events ≔  triggered_events ∪ {source_smart_contract ↦ cross_chain_event} // The smart contract triggers a new event related to the transaction processing&#10;      @act2; received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction} // The smart contract processed the transaction&#10;  end&#10;&#10;  event LISTEN_SMART_CONTRACT_EVENT&#10;    any cross_chain_event cross_chain_transaction&#10;    where&#10;      @grd1; source_smart_contract ↦ cross_chain_event ∈ triggered_events // The smart contract has triggered an event&#10;      @grd2; gateway ↦ source_smart_contract ∈ subscriptions // Exist a subscription to the smart contract events&#10;      @grd3; gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions // The event was not already listened&#10;    then&#10;      @act1; gateway_pending_transactions ≔ gateway_pending_transactions ∪ {gateway ↦ cross_chain_transaction} // The event is added to the cross-chain transactions to be processed by the gateway&#10;      @act2; triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event} // The event is listened and processed&#10;  end&#10;&#10;  event GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION&#10;    any cross_chain_transaction&#10;    where&#10;      @grd1; gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions // There is one pending cross-chain transaction to process&#10;    then&#10;      @act1; received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction}&#10;      @act2; gateway_pending_transactions ≔  gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}&#10;  end&#10;end" version="5">
    <org.eventb.core.seesContext name="_yQ9vsL7uEe6laZimEYihUg" org.eventb.core.target="CCTx_Abstract_DLT_c1"/>
    <org.eventb.core.event name="'" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION" org.eventb.emf.persistence.emf_id="_yPQfj77uEe6laZimEYihUg">
        <org.eventb.core.action name="_yQ9vsb7uEe6laZimEYihUg" org.eventb.core.assignment="received_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_yPQfir7uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yQ9vsr7uEe6laZimEYihUg" org.eventb.core.assignment="triggered_events ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_yPQfi77uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yQ9vs77uEe6laZimEYihUg" org.eventb.core.assignment="subscriptions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act3;" org.eventb.emf.persistence.emf_id="_yPQfjL7uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yQ9vtL7uEe6laZimEYihUg" org.eventb.core.assignment="gateway_pending_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act4;" org.eventb.emf.persistence.emf_id="_yPQfjb7uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yQ9vtb7uEe6laZimEYihUg" org.eventb.core.assignment="received_cross_chain_transactions ≔ ∅" org.eventb.core.generated="false" org.eventb.core.label="act6;" org.eventb.emf.persistence.emf_id="_yPQfjr7uEe6laZimEYihUg"/>
    </org.eventb.core.event>
Guzman Llambias's avatar
Guzman Llambias committed
    <org.eventb.core.event name="_yQ9vtr7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="SUBSCRIBE_SMART_CONTRACT_EVENTS" org.eventb.emf.persistence.emf_id="_yPQfkr7uEe6laZimEYihUg">
        <org.eventb.core.action name="_yQ9vt77uEe6laZimEYihUg" org.eventb.core.assignment="subscriptions ≔ subscriptions  ∪ {gateway ↦ source_smart_contract}" org.eventb.core.comment="The gateway is subscribed to listen to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_yPQfkb7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vuL7uEe6laZimEYihUg" org.eventb.core.comment="The gateway is not already subscribed to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ source_smart_contract ∉ subscriptions" org.eventb.emf.persistence.emf_id="_yPQfkL7uEe6laZimEYihUg"/>
    </org.eventb.core.event>
Guzman Llambias's avatar
Guzman Llambias committed
    <org.eventb.core.event name="_yQ9vub7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="INITIATE_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_yPQfl77uEe6laZimEYihUg">
        <org.eventb.core.action name="_yQ9vur7uEe6laZimEYihUg" org.eventb.core.assignment="received_transactions ≔ received_transactions ∪ {source_smart_contract ↦ transaction}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_yPQflr7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vu77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="transaction ∈ TRANSACTIONS" org.eventb.emf.persistence.emf_id="_yPQflL7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vvL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="transaction ∉ received_transactions[{source_smart_contract}]" org.eventb.emf.persistence.emf_id="_yPQflb7uEe6laZimEYihUg"/>
        <org.eventb.core.parameter name="_yQ9vvb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="transaction" org.eventb.emf.persistence.emf_id="_yPQfk77uEe6laZimEYihUg"/>
    </org.eventb.core.event>
Guzman Llambias's avatar
Guzman Llambias committed
    <org.eventb.core.event name="_yQ9vvr7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_yPQfnr7uEe6laZimEYihUg">
        <org.eventb.core.action name="_yQ9vv77uEe6laZimEYihUg" org.eventb.core.assignment="triggered_events ≔  triggered_events ∪ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.comment="The smart contract triggers a new event related to the transaction processing" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_yPQfnL7uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yQ9vwL7uEe6laZimEYihUg" org.eventb.core.assignment="received_transactions ≔ received_transactions ∖ {source_smart_contract ↦ transaction}" org.eventb.core.comment="The smart contract processed the transaction" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_yPQfnb7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vwb7uEe6laZimEYihUg" org.eventb.core.comment="The smart contract has a pending transaction to process" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ transaction ∈ received_transactions" org.eventb.emf.persistence.emf_id="_yPQfmr7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vwr7uEe6laZimEYihUg" org.eventb.core.comment="The smart contract will allways trigger a new event" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="cross_chain_event ∉ triggered_events[{source_smart_contract}]" org.eventb.emf.persistence.emf_id="_yPQfm77uEe6laZimEYihUg"/>
        <org.eventb.core.parameter name="_yQ9vw77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="transaction" org.eventb.emf.persistence.emf_id="_yPQfmL7uEe6laZimEYihUg"/>
        <org.eventb.core.parameter name="_yQ9vxL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_event" org.eventb.emf.persistence.emf_id="_yPQfmb7uEe6laZimEYihUg"/>
    </org.eventb.core.event>
Guzman Llambias's avatar
Guzman Llambias committed
    <org.eventb.core.event name="_yQ9vxb7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="LISTEN_SMART_CONTRACT_EVENT" org.eventb.emf.persistence.emf_id="_yPQfpr7uEe6laZimEYihUg">
        <org.eventb.core.action name="_yQ9vxr7uEe6laZimEYihUg" org.eventb.core.assignment="gateway_pending_transactions ≔ gateway_pending_transactions ∪ {gateway ↦ cross_chain_transaction}" org.eventb.core.comment="The event is added to the cross-chain transactions to be processed by the gateway" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_yPQfpL7uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yQ9vx77uEe6laZimEYihUg" org.eventb.core.assignment="triggered_events ≔ triggered_events ∖ {source_smart_contract ↦ cross_chain_event}" org.eventb.core.comment="The event is listened and processed" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_yPQfpb7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vyL7uEe6laZimEYihUg" org.eventb.core.comment="The smart contract has triggered an event" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="source_smart_contract ↦ cross_chain_event ∈ triggered_events" org.eventb.emf.persistence.emf_id="_yPQfob7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vyb7uEe6laZimEYihUg" org.eventb.core.comment="Exist a subscription to the smart contract events" org.eventb.core.generated="false" org.eventb.core.label="grd2;" org.eventb.core.predicate="gateway ↦ source_smart_contract ∈ subscriptions" org.eventb.emf.persistence.emf_id="_yPQfor7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yQ9vyr7uEe6laZimEYihUg" org.eventb.core.comment="The event was not already listened" org.eventb.core.generated="false" org.eventb.core.label="grd3;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction ∉ gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_yPQfo77uEe6laZimEYihUg"/>
        <org.eventb.core.parameter name="_yQ9vy77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_event" org.eventb.emf.persistence.emf_id="_yPQfn77uEe6laZimEYihUg"/>
        <org.eventb.core.parameter name="_yQ9vzL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_transaction" org.eventb.emf.persistence.emf_id="_yPQfoL7uEe6laZimEYihUg"/>
    </org.eventb.core.event>
Guzman Llambias's avatar
Guzman Llambias committed
    <org.eventb.core.event name="_yQ9vzb7uEe6laZimEYihUg" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="GATEWAY_PROCESS_CROSS_CHAIN_TRANSACTION" org.eventb.emf.persistence.emf_id="_yPQfq77uEe6laZimEYihUg">
        <org.eventb.core.action name="_yREdYL7uEe6laZimEYihUg" org.eventb.core.assignment="received_cross_chain_transactions ≔ received_cross_chain_transactions ∪ {target_smart_contract ↦ cross_chain_transaction}" org.eventb.core.generated="false" org.eventb.core.label="act1;" org.eventb.emf.persistence.emf_id="_yPQfqb7uEe6laZimEYihUg"/>
        <org.eventb.core.action name="_yREdYb7uEe6laZimEYihUg" org.eventb.core.assignment="gateway_pending_transactions ≔  gateway_pending_transactions ∖ {gateway ↦ cross_chain_transaction}" org.eventb.core.generated="false" org.eventb.core.label="act2;" org.eventb.emf.persistence.emf_id="_yPQfqr7uEe6laZimEYihUg"/>
        <org.eventb.core.guard name="_yREdYr7uEe6laZimEYihUg" org.eventb.core.comment="There is one pending cross-chain transaction to process" org.eventb.core.generated="false" org.eventb.core.label="grd1;" org.eventb.core.predicate="gateway ↦ cross_chain_transaction ∈ gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_yPQfqL7uEe6laZimEYihUg"/>
        <org.eventb.core.parameter name="_yREdY77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="cross_chain_transaction" org.eventb.emf.persistence.emf_id="_yPQfp77uEe6laZimEYihUg"/>
    </org.eventb.core.event>
Guzman Llambias's avatar
Guzman Llambias committed
    <org.eventb.core.invariant name="_yREdZL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="inv1;" org.eventb.core.predicate="received_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ TRANSACTIONS" org.eventb.emf.persistence.emf_id="_yPQfhb7uEe6laZimEYihUg"/>
    <org.eventb.core.invariant name="_yREdZb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="inv2;" org.eventb.core.predicate="triggered_events ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_EVENTS" org.eventb.emf.persistence.emf_id="_yPQfhr7uEe6laZimEYihUg"/>
    <org.eventb.core.invariant name="_yREdZr7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="inv3;" org.eventb.core.predicate="subscriptions ∈ GATEWAYS ↔ CROSS_CHAIN_SMART_CONTRACTS" org.eventb.emf.persistence.emf_id="_yPQfh77uEe6laZimEYihUg"/>
    <org.eventb.core.invariant name="_yREdZ77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="inv4;" org.eventb.core.predicate="gateway_pending_transactions ∈ GATEWAYS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.emf.persistence.emf_id="_yPQfiL7uEe6laZimEYihUg"/>
    <org.eventb.core.invariant name="_yREdaL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.label="inv6;" org.eventb.core.predicate="received_cross_chain_transactions ∈ CROSS_CHAIN_SMART_CONTRACTS ↔ CROSS_CHAIN_TRANSACTIONS" org.eventb.emf.persistence.emf_id="_yPQfib7uEe6laZimEYihUg"/>
    <org.eventb.core.variable name="_yREdab7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_transactions" org.eventb.emf.persistence.emf_id="_yPQfgL7uEe6laZimEYihUg"/>
    <org.eventb.core.variable name="_yREdar7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="triggered_events" org.eventb.emf.persistence.emf_id="_yPQfgb7uEe6laZimEYihUg"/>
    <org.eventb.core.variable name="_yREda77uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="subscriptions" org.eventb.emf.persistence.emf_id="_yPQfgr7uEe6laZimEYihUg"/>
    <org.eventb.core.variable name="_yREdbL7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="gateway_pending_transactions" org.eventb.emf.persistence.emf_id="_yPQfg77uEe6laZimEYihUg"/>
    <org.eventb.core.variable name="_yREdbb7uEe6laZimEYihUg" org.eventb.core.generated="false" org.eventb.core.identifier="received_cross_chain_transactions" org.eventb.emf.persistence.emf_id="_yPQfhL7uEe6laZimEYihUg"/>
</org.eventb.core.machineFile>