syntax = "proto3"; package pb; import "basic.proto"; // Inter-blockchain Transfer Protocol message IBTP { enum Type { INTERCHAIN = 0; RECEIPT_SUCCESS = 1; RECEIPT_FAILURE = 2; ROLLBACK = 3; RECEIPT_ROLLBACK = 4; } enum Category { REQUEST = 0; RESPONSE = 1; UNKNOWN = 2; } // ID of sending chain string from = 1; // ID of receiving chain string to = 2; // Index of inter-chain transaction uint64 nonce = 3; // inter-chain transaction type Type type = 4; // Timestamp of inter-chain events int64 timestamp = 5; // Proof of inter-chain transactions bytes proof = 6; // Encoded content used by inter-chain bytes payload = 7; // info about other txs in the same group StringUint64Map group = 8; // Message version string version = 9; // Self-defined fields used by app-chain bytes extra = 10; } message payload { bool encrypted = 1; bytes content = 2; } message content { string src_contract_id = 1; string dst_contract_id = 2; string func = 3; repeated bytes args = 4; string callback = 5; repeated bytes argsCb = 6; string rollback = 7; repeated bytes argsRb = 8; } message IBTPs { repeated IBTP ibtps = 1; }