github.com/mavryk-network/mvgo@v1.19.9/rpc/tx_rollup.go (about) 1 // Copyright (c) 2022 Blockwatch Data Inc. 2 // Author: alex@blockwatch.cc 3 4 package rpc 5 6 import ( 7 "encoding/json" 8 9 "github.com/mavryk-network/mvgo/mavryk" 10 ) 11 12 // Ensure TxRollup implements the TypedOperation interface. 13 var _ TypedOperation = (*TxRollup)(nil) 14 15 // TxRollup represents any kind of rollup operation 16 type TxRollup struct { 17 // common 18 Manager 19 20 // rollup address (used by most ops) 21 Rollup mavryk.Address `json:"rollup"` 22 23 // tx_rollup_origination has no data 24 25 // tx_rollup_submit_batch 26 Batch TxRollupBatch `json:"-"` 27 28 // tx_rollup_rejection 29 Reject TxRollupRejection `json:"-"` 30 31 // tx_rollup_dispatch_tickets 32 Dispatch TxRollupDispatch `json:"-"` 33 34 // tx_rollup_commit 35 Commit TxRollupCommit `json:"commitment"` 36 } 37 38 type TxRollupResult struct { 39 OriginatedRollup mavryk.Address `json:"originated_rollup"` // v013 tx_rollup_originate 40 Level int64 `json:"level"` // v013 ?? here or in metadata?? 41 } 42 43 func (r *TxRollup) UnmarshalJSON(data []byte) error { 44 type alias *TxRollup 45 if err := json.Unmarshal(data, alias(r)); err != nil { 46 return err 47 } 48 switch r.Kind() { 49 case mavryk.OpTypeTxRollupSubmitBatch: 50 return json.Unmarshal(data, &r.Batch) 51 case mavryk.OpTypeTxRollupRejection: 52 return json.Unmarshal(data, &r.Reject) 53 case mavryk.OpTypeTxRollupDispatchTickets: 54 return json.Unmarshal(data, &r.Dispatch) 55 } 56 return nil 57 } 58 59 func (r *TxRollup) Target() mavryk.Address { 60 if r.Dispatch.TxRollup.IsValid() { 61 return r.Dispatch.TxRollup 62 } 63 return r.Rollup 64 } 65 66 type TxRollupBatch struct { 67 Content mavryk.HexBytes `json:"content"` 68 } 69 70 type TxRollupCommit struct { 71 Level int64 `json:"level"` 72 Messages []string `json:"messages"` 73 Predecessor string `json:"predecessor,omitempty"` 74 InboxMerkleRoot string `json:"inbox_merkle_root"` 75 } 76 77 type TxRollupRejection struct { 78 Level int64 `json:"level"` 79 Message json.RawMessage `json:"commitment,omitempty"` 80 MessagePosition mavryk.Z `json:"message_position"` 81 MessagePath []string `json:"message_path,omitempty"` 82 MessageResultHash string `json:"message_result_hash"` 83 MessageResultPath []string `json:"message_result_path,omitempty"` 84 PreviousMessageResult json.RawMessage `json:"previous_message_result,omitempty"` 85 PreviousMessageResultPath []string `json:"previous_message_result_path,omitempty"` 86 Proof json.RawMessage `json:"proof,omitempty"` 87 } 88 89 type TxRollupDispatch struct { 90 Level int64 `json:"level"` 91 TxRollup mavryk.Address `json:"tx_rollup"` 92 ContextHash string `json:"context_hash"` 93 MessageIndex int64 `json:"message_index"` 94 TicketsInfo json.RawMessage `json:"tickets_info"` 95 }