Skip to content

Commit b00e774

Browse files
authored
Merge pull request #828 from jshufro/jms/monorepo-saturn
Import saturn branch history from rocketpool-go
2 parents 265d735 + db6f30d commit b00e774

34 files changed

Lines changed: 2596 additions & 445 deletions

bindings/LICENSE

Lines changed: 674 additions & 0 deletions
Large diffs are not rendered by default.

bindings/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# rocketpool-go
2+
A Golang library for interacting with the Rocket Pool network.

bindings/azure-pipelines.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Go
2+
# Build your Go project.
3+
# Add steps that test, save build artifacts, deploy, and more:
4+
# https://docs.microsoft.com/azure/devops/pipelines/languages/go
5+
6+
trigger:
7+
branches:
8+
include:
9+
- '*'
10+
- refs/tags/*
11+
12+
pool:
13+
vmImage: ubuntu-latest
14+
15+
steps:
16+
- task: DownloadSecureFile@1
17+
name: githubPEM
18+
displayName: 'Download Github PEM'
19+
inputs:
20+
secureFile: 'rp-azure-pipeline-github.pem'
21+
- bash: |
22+
eval $(ruby -e "require 'openssl'; require 'jwt'; private_pem = File.read(ENV['GITHUB_PEM_PATH']); private_key = OpenSSL::PKey::RSA.new(private_pem); payload = { iat: Time.now.to_i - 60, exp: Time.now.to_i + (10 * 60), iss: ENV['GITHUB_APP_ID'] }; jwt = JWT.encode(payload, private_key, 'RS256'); puts 'PUSH_JWT='+jwt;")
23+
TOKEN=$(curl -s -X POST \
24+
-H "Authorization: Bearer $PUSH_JWT" \
25+
-H "Accept: application/vnd.github.v3+json" \
26+
https://api.github.com/app/installations/$GITHUB_APP_INSTALLATION_ID/access_tokens \
27+
| jq -r '.token')
28+
git remote add github https://x-access-token:$TOKEN@github.com/rocket-pool/$REPO_NAME
29+
git fetch github
30+
git push github HEAD:$(Build.SourceBranch) -f --verbose
31+
git push github HEAD:$(Build.SourceBranch) --tags --verbose
32+
displayName: 'Push to Github'
33+
env:
34+
GITHUB_PEM_PATH: $(githubPEM.secureFilePath)
35+
GITHUB_APP_ID: $(GITHUB_APP_ID)
36+
GITHUB_APP_INSTALLATION_ID: $(GITHUB_APP_INSTALLATION_ID)

bindings/deposit/deposit-pool.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package deposit
2+
3+
import (
4+
"fmt"
5+
"math/big"
6+
7+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
8+
"github.com/ethereum/go-ethereum/common"
9+
"github.com/rocket-pool/smartnode/bindings/rocketpool"
10+
)
11+
12+
// Estimate the gas required to exit the validator queue
13+
func EstimateExitQueueGas(rp *rocketpool.RocketPool, validatorIndex uint64, expressQueue bool, opts *bind.TransactOpts) (rocketpool.GasInfo, error) {
14+
rocketDepositPool, err := getRocketDepositPool(rp, nil)
15+
if err != nil {
16+
return rocketpool.GasInfo{}, err
17+
}
18+
validatorIndexBig := big.NewInt(int64(validatorIndex))
19+
return rocketDepositPool.GetTransactionGasInfo(opts, "exitQueue", validatorIndexBig, expressQueue)
20+
}
21+
22+
// Exit the validator queue
23+
func ExitQueue(rp *rocketpool.RocketPool, validatorIndex uint64, expressQueue bool, opts *bind.TransactOpts) (common.Hash, error) {
24+
rocketDepositPool, err := getRocketDepositPool(rp, nil)
25+
if err != nil {
26+
return common.Hash{}, err
27+
}
28+
validatorIndexBig := big.NewInt(int64(validatorIndex))
29+
tx, err := rocketDepositPool.Transact(opts, "exitQueue", validatorIndexBig, expressQueue)
30+
if err != nil {
31+
return common.Hash{}, fmt.Errorf("error exiting validator queue: %w", err)
32+
}
33+
return tx.Hash(), nil
34+
}
35+
36+
// Struct to hold queue top (address of the validator at the top of the queue and a boolean indicating if the assignment is possible)
37+
type QueueTop struct {
38+
Receiver common.Address `abi:"receiver"`
39+
AssignmentPossible bool `abi:"assignmentPossible"`
40+
HeadMovedBlock *big.Int `abi:"headMovedBlock"`
41+
}
42+
43+
func GetQueueTop(rp *rocketpool.RocketPool, opts *bind.CallOpts) (QueueTop, error) {
44+
rocketDepositPool, err := getRocketDepositPool(rp, opts)
45+
if err != nil {
46+
return QueueTop{}, err
47+
}
48+
queueTop := new(QueueTop)
49+
if err := rocketDepositPool.Call(opts, queueTop, "getQueueTop"); err != nil {
50+
return QueueTop{}, fmt.Errorf("error getting queue top: %w", err)
51+
}
52+
return *queueTop, nil
53+
}
54+
55+
func GetTotalQueueLength(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint32, error) {
56+
rocketDepositPool, err := getRocketDepositPool(rp, opts)
57+
if err != nil {
58+
return 0, err
59+
}
60+
totalLength := new(*big.Int)
61+
if err := rocketDepositPool.Call(opts, totalLength, "getTotalQueueLength"); err != nil {
62+
return 0, fmt.Errorf("error getting total queue length: %w", err)
63+
}
64+
return uint32((*totalLength).Uint64()), nil
65+
}
66+
67+
func GetExpressQueueLength(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint32, error) {
68+
rocketDepositPool, err := getRocketDepositPool(rp, opts)
69+
if err != nil {
70+
return 0, err
71+
}
72+
length := new(*big.Int)
73+
if err := rocketDepositPool.Call(opts, length, "getExpressQueueLength"); err != nil {
74+
return 0, fmt.Errorf("error getting express queue length: %w", err)
75+
}
76+
return uint32((*length).Uint64()), nil
77+
}
78+
79+
func GetStandardQueueLength(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint32, error) {
80+
rocketDepositPool, err := getRocketDepositPool(rp, opts)
81+
if err != nil {
82+
return 0, err
83+
}
84+
length := new(*big.Int)
85+
if err := rocketDepositPool.Call(opts, length, "getStandardQueueLength"); err != nil {
86+
return 0, fmt.Errorf("error getting standard queue length: %w", err)
87+
}
88+
return uint32((*length).Uint64()), nil
89+
}

bindings/deposit/deposit.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,21 @@ func Deposit(rp *rocketpool.RocketPool, opts *bind.TransactOpts) (common.Hash, e
7373
}
7474

7575
// Estimate the gas of AssignDeposits
76-
func EstimateAssignDepositsGas(rp *rocketpool.RocketPool, opts *bind.TransactOpts) (rocketpool.GasInfo, error) {
76+
func EstimateAssignDepositsGas(rp *rocketpool.RocketPool, max *big.Int, opts *bind.TransactOpts) (rocketpool.GasInfo, error) {
7777
rocketDepositPool, err := getRocketDepositPool(rp, nil)
7878
if err != nil {
7979
return rocketpool.GasInfo{}, err
8080
}
81-
return rocketDepositPool.GetTransactionGasInfo(opts, "assignDeposits")
81+
return rocketDepositPool.GetTransactionGasInfo(opts, "assignDeposits", max)
8282
}
8383

8484
// Assign deposits
85-
func AssignDeposits(rp *rocketpool.RocketPool, opts *bind.TransactOpts) (common.Hash, error) {
85+
func AssignDeposits(rp *rocketpool.RocketPool, max *big.Int, opts *bind.TransactOpts) (common.Hash, error) {
8686
rocketDepositPool, err := getRocketDepositPool(rp, nil)
8787
if err != nil {
8888
return common.Hash{}, err
8989
}
90-
tx, err := rocketDepositPool.Transact(opts, "assignDeposits")
90+
tx, err := rocketDepositPool.Transact(opts, "assignDeposits", max)
9191
if err != nil {
9292
return common.Hash{}, fmt.Errorf("error assigning deposits: %w", err)
9393
}
@@ -102,3 +102,11 @@ func getRocketDepositPool(rp *rocketpool.RocketPool, opts *bind.CallOpts) (*rock
102102
defer rocketDepositPoolLock.Unlock()
103103
return rp.GetContract("rocketDepositPool", opts)
104104
}
105+
106+
func GetRocketDepositPoolVersion(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint8, error) {
107+
rocketDepositPool, err := getRocketDepositPool(rp, opts)
108+
if err != nil {
109+
return 0, err
110+
}
111+
return rocketpool.GetContractVersion(rp, *rocketDepositPool.Address, opts)
112+
}

bindings/go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ require (
1818
github.com/bits-and-blooms/bitset v1.11.0 // indirect
1919
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
2020
github.com/cespare/cp v1.1.1 // indirect
21+
github.com/cespare/xxhash v1.1.0 // indirect
2122
github.com/cespare/xxhash/v2 v2.3.0 // indirect
2223
github.com/cheggaaa/pb/v3 v3.0.8 // indirect
2324
github.com/cockroachdb/errors v1.11.1 // indirect
@@ -27,12 +28,13 @@ require (
2728
github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
2829
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
2930
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
30-
github.com/dgraph-io/ristretto v0.1.0 // indirect
31+
github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 // indirect
3132
github.com/dustin/go-humanize v1.0.1 // indirect
33+
github.com/emicklei/dot v1.6.2 // indirect
3234
github.com/emirpasic/gods v1.12.0 // indirect
3335
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
3436
github.com/fatih/color v1.14.1 // indirect
35-
github.com/ferranbt/fastssz v0.1.3 // indirect
37+
github.com/ferranbt/fastssz v0.1.4 // indirect
3638
github.com/fsnotify/fsnotify v1.6.0 // indirect
3739
github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect
3840
github.com/getsentry/sentry-go v0.25.0 // indirect
@@ -41,7 +43,6 @@ require (
4143
github.com/go-git/go-git/v5 v5.3.0 // indirect
4244
github.com/go-ole/go-ole v1.3.0 // indirect
4345
github.com/go-stack/stack v1.8.1 // indirect
44-
github.com/golang/glog v1.1.0 // indirect
4546
github.com/google/uuid v1.6.0 // indirect
4647
github.com/gorilla/websocket v1.5.3 // indirect
4748
github.com/holiman/uint256 v1.2.4 // indirect
@@ -63,7 +64,6 @@ require (
6364
github.com/pkg/errors v0.9.1 // indirect
6465
github.com/princjef/mageutil v1.0.0 // indirect
6566
github.com/prometheus/client_golang v1.20.0 // indirect
66-
github.com/protolambda/zssz v0.1.5 // indirect
6767
github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
6868
github.com/rivo/uniseg v0.4.4 // indirect
6969
github.com/rogpeppe/go-internal v1.11.0 // indirect
@@ -72,6 +72,7 @@ require (
7272
github.com/sergi/go-diff v1.2.0 // indirect
7373
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
7474
github.com/sirupsen/logrus v1.9.0 // indirect
75+
github.com/spaolacci/murmur3 v1.1.0 // indirect
7576
github.com/stretchr/testify v1.9.0 // indirect
7677
github.com/supranational/blst v0.3.11 // indirect
7778
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect

0 commit comments

Comments
 (0)