Skip to content

Commit 7e049f4

Browse files
Merge pull request #3 from dipdup-net/feature/ithaca-rpc
Feature: add ithaca RPC
2 parents bb0838d + e1a6181 commit 7e049f4

File tree

7 files changed

+123
-16
lines changed

7 files changed

+123
-16
lines changed

node/block_data.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,29 @@ type BlockMetadata struct {
3030
TestChainStatus struct {
3131
Status string `json:"status"`
3232
} `json:"test_chain_status"`
33-
MaxOperationsTTL int `json:"max_operations_ttl"`
34-
MaxOperationDataLength int `json:"max_operation_data_length"`
35-
MaxBlockHeaderLength int `json:"max_block_header_length"`
33+
MaxOperationsTTL uint64 `json:"max_operations_ttl"`
34+
MaxOperationDataLength uint64 `json:"max_operation_data_length"`
35+
MaxBlockHeaderLength uint64 `json:"max_block_header_length"`
3636
MaxOperationListLength []struct {
37-
MaxSize int `json:"max_size"`
38-
MaxOp int `json:"max_op,omitempty"`
37+
MaxSize uint64 `json:"max_size"`
38+
MaxOp uint64 `json:"max_op,omitempty"`
3939
} `json:"max_operation_list_length"`
4040
Baker string `json:"baker"`
4141
LevelInfo LevelInfo `json:"level_info"`
4242
VotingPeriodInfo struct {
4343
VotingPeriod struct {
44-
Index int `json:"index"`
44+
Index uint64 `json:"index"`
4545
Kind string `json:"kind"`
46-
StartPosition int `json:"start_position"`
46+
StartPosition uint64 `json:"start_position"`
4747
} `json:"voting_period"`
48-
Position int `json:"position"`
49-
Remaining int `json:"remaining"`
48+
Position uint64 `json:"position"`
49+
Remaining uint64 `json:"remaining"`
5050
} `json:"voting_period_info"`
5151
NonceHash string `json:"nonce_hash"`
5252
ConsumedGas string `json:"consumed_gas"`
5353
Deactivated []interface{} `json:"deactivated"`
5454
BalanceUpdates []BalanceUpdate `json:"balance_updates"`
55-
LiquidityBakingEscapeEma int `json:"liquidity_baking_escape_ema"`
55+
LiquidityBakingEscapeEma uint64 `json:"liquidity_baking_escape_ema"`
5656
ImplicitOperationsResults []ImplicitOperationsResult `json:"implicit_operations_results"`
5757
}
5858

node/chain_data.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,5 @@ func (c *Content) UnmarshalJSON(data []byte) error {
134134

135135
// IsManager -
136136
func IsManager(kind string) bool {
137-
return kind == KindDelegation || kind == KindOrigination || kind == KindReveal || kind == KindTransaction
137+
return kind == KindDelegation || kind == KindOrigination || kind == KindReveal || kind == KindTransaction || kind == KindSetDepositsLimit
138138
}

node/consts.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ const (
1919
KindNonceRevelation = "seed_nonce_revelation"
2020
KindTransaction = "transaction"
2121
KindRegisterGlobalConstant = "register_global_constant"
22+
KindPreendorsement = "preendorsement"
23+
KindSetDepositsLimit = "set_deposits_limit"
24+
KindDoublePreendorsement = "double_preendorsement_evidence"
2225
)
2326

2427
const (

node/context_data.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type Constants struct {
3838
MinProposalQuorum int64 `json:"min_proposal_quorum"`
3939
InitialEndorsers int64 `json:"initial_endorsers"`
4040
DelayPerMissingEndorsement int64 `json:"delay_per_missing_endorsement,string"`
41+
MinimalBlockDelay int64 `json:"minimal_block_delay,string,omitempty"`
4142
}
4243

4344
// Int64StringSlice -

node/general.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ type GeneralAPI interface {
77
Version(ctx context.Context) (Version, error)
88
StatsGC(ctx context.Context) (StatsGC, error)
99
StatsMemory(ctx context.Context) (StatsMemory, error)
10+
11+
URL() string
1012
}
1113

1214
// General -
@@ -23,6 +25,11 @@ func NewGeneral(baseURL string) *General {
2325
}
2426
}
2527

28+
// URL -
29+
func (api *General) URL() string {
30+
return api.baseURL
31+
}
32+
2633
// Version -
2734
func (api *General) Version(ctx context.Context) (Version, error) {
2835
req, err := newGetRequest(api.baseURL, "version", nil)

node/operations.go

Lines changed: 98 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,24 @@ func (op *Operation) UnmarshalJSON(data []byte) error {
109109
return err
110110
}
111111
op.Body = register
112+
case KindDoublePreendorsement:
113+
var doublePreendorsement DoublePreendorsementEvidence
114+
if err := json.Unmarshal(data, &doublePreendorsement); err != nil {
115+
return err
116+
}
117+
op.Body = doublePreendorsement
118+
case KindSetDepositsLimit:
119+
var setDepositsLimit SetDepositsLimit
120+
if err := json.Unmarshal(data, &setDepositsLimit); err != nil {
121+
return err
122+
}
123+
op.Body = setDepositsLimit
124+
case KindPreendorsement:
125+
var preendorsement Preendorsement
126+
if err := json.Unmarshal(data, &preendorsement); err != nil {
127+
return err
128+
}
129+
op.Body = preendorsement
112130
}
113131
return nil
114132
}
@@ -158,6 +176,21 @@ func (op Operation) Endorsement() (Endorsement, error) {
158176
return endorsement, nil
159177
}
160178

179+
// Preendorsement -
180+
func (op Operation) Preendorsement() (Preendorsement, error) {
181+
if op.Kind != KindPreendorsement {
182+
return Preendorsement{}, errors.Errorf("invalid kind of operation: %s", op.Kind)
183+
}
184+
if op.Body == nil {
185+
return Preendorsement{}, errors.New("nil operation body")
186+
}
187+
preendorsement, ok := op.Body.(Preendorsement)
188+
if !ok {
189+
return Preendorsement{}, errors.Errorf("invalid body type: %T", op.Body)
190+
}
191+
return preendorsement, nil
192+
}
193+
161194
// EndorsementWithSlot -
162195
func (op Operation) EndorsementWithSlot() (EndorsementWithSlot, error) {
163196
if op.Kind != KindEndorsementWithSlot {
@@ -293,6 +326,21 @@ func (op Operation) SeedNonceRevelation() (SeedNonceRevelation, error) {
293326
return seed, nil
294327
}
295328

329+
// SetDepositsLimit -
330+
func (op Operation) SetDepositsLimit() (SetDepositsLimit, error) {
331+
if op.Kind != KindSetDepositsLimit {
332+
return SetDepositsLimit{}, errors.Errorf("invalid kind of operation: %s", op.Kind)
333+
}
334+
if op.Body == nil {
335+
return SetDepositsLimit{}, errors.New("nil operation body")
336+
}
337+
tx, ok := op.Body.(SetDepositsLimit)
338+
if !ok {
339+
return SetDepositsLimit{}, errors.Errorf("invalid body type: %T", op.Body)
340+
}
341+
return tx, nil
342+
}
343+
296344
// Transaction -
297345
func (op Operation) Transaction() (Transaction, error) {
298346
if op.Kind != KindTransaction {
@@ -336,6 +384,19 @@ type EndorsementWithSlot struct {
336384
Metadata *EndorsementMetadata `json:"metadata,omitempty"`
337385
}
338386

387+
// Preendorsement -
388+
type Preendorsement struct {
389+
Slot uint64 `json:"slot"`
390+
Level uint64 `json:"level"`
391+
Round int64 `json:"round"`
392+
BlockPayloadHash string `json:"block_payload_hash"`
393+
Metadata struct {
394+
BalanceUpdates []interface{} `json:"balance_updates"`
395+
Delegate string `json:"delegate"`
396+
PreendorsementPower int `json:"preendorsement_power"`
397+
} `json:"metadata"`
398+
}
399+
339400
// Delegation -
340401
type Delegation struct {
341402
Source string `json:"source"`
@@ -356,8 +417,15 @@ type DoubleBakingEvidence struct {
356417

357418
// DoubleEndorsementEvidence -
358419
type DoubleEndorsementEvidence struct {
359-
Op1 *InlinedEndorsement `json:"Op1"`
360-
Op2 *InlinedEndorsement `json:"Op2"`
420+
Op1 *InlinedEndorsement `json:"op1"`
421+
Op2 *InlinedEndorsement `json:"op2"`
422+
Metadata *OnlyBalanceUpdatesMetadata `json:"metadata,omitempty"`
423+
}
424+
425+
// DoublePreendorsementEvidence -
426+
type DoublePreendorsementEvidence struct {
427+
Op1 *InlinedEndorsement `json:"op1"`
428+
Op2 *InlinedEndorsement `json:"op2"`
361429
Metadata *OnlyBalanceUpdatesMetadata `json:"metadata,omitempty"`
362430
}
363431

@@ -410,6 +478,18 @@ type SeedNonceRevelation struct {
410478
Metadata *OnlyBalanceUpdatesMetadata `json:"metadata,omitempty"`
411479
}
412480

481+
// SetDepositsLimit -
482+
type SetDepositsLimit struct {
483+
Kind string `json:"kind"`
484+
Source string `json:"source"`
485+
Fee string `json:"fee"`
486+
Counter string `json:"counter"`
487+
GasLimit string `json:"gas_limit"`
488+
StorageLimit string `json:"storage_limit"`
489+
Limit *string `json:"limit,omitempty"`
490+
Metadata *ManagerOperationMetadata `json:"metadata"`
491+
}
492+
413493
// Transaction -
414494
type Transaction struct {
415495
Source string `json:"source"`
@@ -597,6 +677,22 @@ type InlinedEndorsementOperations struct {
597677
Level int `json:"level"`
598678
}
599679

680+
// InlinedPreendorsement -
681+
type InlinedPreendorsement struct {
682+
Branch string `json:"branch"`
683+
Operations *InlinedPreendorsementOperations `json:"operations,omitempty"`
684+
Signature string `json:"signature"`
685+
}
686+
687+
// InlinedPreendorsementOperations -
688+
type InlinedPreendorsementOperations struct {
689+
Kind string `json:"kind"`
690+
Slot uint64 `json:"slot"`
691+
Level uint64 `json:"level"`
692+
Round int64 `json:"round"`
693+
BlockPayloadHash string `json:"block_payload_hash"`
694+
}
695+
600696
// EndorsementWithSlotEntity -
601697
type EndorsementWithSlotEntity struct {
602698
Branch string `json:"branch"`

node/protocols_api.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
// ProtocolsAPI -
99
type ProtocolsAPI interface {
10-
Protocols(ctx context.Context) ([]string, error)
10+
GetProtocols(ctx context.Context) ([]string, error)
1111
Protocol(ctx context.Context, hash string) (ProtocolInfo, error)
1212
Environment(ctx context.Context, hash string) (int, error)
1313
}
@@ -26,8 +26,8 @@ func NewProtocols(baseURL string) *Protocols {
2626
}
2727
}
2828

29-
// Protocols -
30-
func (api *Protocols) Protocols(ctx context.Context) ([]string, error) {
29+
// GetProtocols -
30+
func (api *Protocols) GetProtocols(ctx context.Context) ([]string, error) {
3131
req, err := newGetRequest(api.baseURL, "protocols", nil)
3232
if err != nil {
3333
return nil, err

0 commit comments

Comments
 (0)