Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
ee67229
wip
0xfornax Dec 3, 2024
d13918d
Continued work on v1.4 bindings
thomaspanf Dec 11, 2024
ce6fe0c
Added gas estimator calls
thomaspanf Dec 12, 2024
cd2017b
Added bindings for rocketNodeStaking and rocketNodeManager
thomaspanf Dec 12, 2024
8d3ab0d
RocketNodeDeposit and LinkedListStorage bindings
thomaspanf Dec 16, 2024
e1dcbd9
Add beaconStateVerifier bindings
thomaspanf Dec 17, 2024
afc371e
Remove salt and expected minipool address from deposit
0xfornax Dec 17, 2024
b36dd6e
Merge remote-tracking branch 'origin/master' into saturn
0xfornax Dec 17, 2024
fee1963
Add legacy v1.3.1
0xfornax Dec 17, 2024
88e4c1f
Bool pointer
0xfornax Dec 17, 2024
eca37b0
Add Saturn 1 to version checker
0xfornax Dec 17, 2024
2ded980
GetWithdrawalCredentials as common.Hash
0xfornax Dec 19, 2024
91c9b2f
Fix interface
0xfornax Dec 19, 2024
11d0351
Added megapool encodedABI
0xfornax Dec 19, 2024
40d6897
Add GetRocketDepositPoolVersion
0xfornax Dec 19, 2024
1fa6fd0
Fix GetMegapoolExpectedAddress
0xfornax Dec 19, 2024
b678db1
Fix megapool types
0xfornax Dec 20, 2024
e1c8986
Add exitQueue
0xfornax Jan 9, 2025
915873f
Add RocketMegapoolProxy calls
thomaspanf Jan 10, 2025
2d33a5f
Add express queue DAO params
0xfornax Jan 10, 2025
c34feb5
Merge branch 'saturn' of github.com:rocket-pool/rocketpool-go into sa…
0xfornax Jan 10, 2025
0bc1d7d
Rename expressQueue functions
0xfornax Jan 12, 2025
dc2837e
Change return type
0xfornax Jan 12, 2025
d723bc2
Rename
0xfornax Jan 12, 2025
6d9c09f
Add GetDelegate and SetUseLatestDelegate
thomaspanf Jan 14, 2025
44a357f
Add GetUseLatestDelegate
thomaspanf Jan 15, 2025
cea7894
Include RocketMegapoolProxy and RocketMegapoolDelegate in Encoded Abi
thomaspanf Jan 15, 2025
30257e0
Add megapool delegateUpgrade
thomaspanf Jan 15, 2025
d008379
Added GetQueueTop
0xfornax Jan 16, 2025
546b868
Added a boolean to GetQueueTop return type
0xfornax Jan 16, 2025
1209a4b
Add assignMegapools
0xfornax Jan 16, 2025
c17d396
Add estimateAssignMegapool
0xfornax Jan 16, 2025
546c291
validator index as big.Int
0xfornax Jan 16, 2025
4b076f6
Add GetValidaotInfo
thomaspanf Jan 21, 2025
f210dad
Add RocketMegapoolFactory contract
0xfornax Jan 22, 2025
4636afa
Use unpackIntoInterface
0xfornax Jan 22, 2025
77fa0c1
Add proof to the estimate call
0xfornax Jan 27, 2025
b4d316d
Fix interface
0xfornax Jan 27, 2025
2597126
Export ValidatorProof struct
0xfornax Jan 27, 2025
8bdaaab
Fix capital letters
0xfornax Jan 27, 2025
7b49ba5
Fix node detail multicall
thomaspanf Jan 28, 2025
edf39bf
Add missing stake param
0xfornax Jan 28, 2025
3697d3f
Merge branch 'saturn' of github.com:rocket-pool/rocketpool-go into sa…
0xfornax Jan 28, 2025
eacd8e2
Fix big int args
0xfornax Jan 29, 2025
8865a33
update ValidatorInfo interface
thomaspanf Jan 30, 2025
24d744a
Init RocketNetworkRevenues bindings
thomaspanf Feb 3, 2025
271d34d
Add GetLastDistributionBlock, update GetValidatorInfo interface
thomaspanf Feb 4, 2025
13b3eab
Add GetDelegateExpired binding
thomaspanf Feb 6, 2025
583d596
New ABI
0xfornax Feb 6, 2025
d1d32cf
Megapool manager
0xfornax Feb 6, 2025
c1ee548
Add GetAllMegapoolValidators
0xfornax Feb 7, 2025
5ee5152
Add abi details to RevenueSlit
0xfornax Feb 10, 2025
20d489f
Add withdraw credit
0xfornax Feb 10, 2025
e340a44
Adds checks if saturn is deployed
0xfornax Feb 11, 2025
b622370
Add HeadMovedBlock
0xfornax Feb 11, 2025
5022086
Add AssignDeposits to legacy v131
0xfornax Feb 11, 2025
3bdd423
Add helper for grabbing the queue position
thomaspanf Feb 11, 2025
ec1f542
Merge branch 'saturn' of github.com:rocket-pool/rocketpool-go into sa…
thomaspanf Feb 11, 2025
a91b1be
Remove AssignMegapools
0xfornax Feb 11, 2025
741edcd
Add GetTotalQueueLength
0xfornax Feb 12, 2025
9f4f50a
Merge branch 'saturn' of github.com:rocket-pool/rocketpool-go into sa…
0xfornax Feb 12, 2025
ad79c50
Fix ptr
0xfornax Feb 12, 2025
e671c11
GetValidatorInfo from mpManager now working - see comments for details
0xfornax Feb 12, 2025
3c04da8
Add standard/express queue length
0xfornax Feb 13, 2025
597b79c
Add CalculatePendingRewards and CalculateRewards
thomaspanf Feb 17, 2025
4410642
Rename 'chunk' to 'slice' and improve error message in Scan
thomaspanf Feb 17, 2025
5b38484
Add GetMegapoolPubkeys
0xfornax Feb 17, 2025
159335e
Add NativeMegapoolDetails
0xfornax Feb 18, 2025
b3c66ca
Fix loop value capture
0xfornax Feb 19, 2025
270925a
Update megapool encoded abi and added GetActiveValidatorCount binding
thomaspanf Feb 20, 2025
4692751
Add EstimateDistribute and Distribute
0xfornax Mar 10, 2025
51fa7bb
Add functions to interface
0xfornax Mar 10, 2025
819230b
Add NotifyExit
0xfornax Mar 19, 2025
c943437
Add NotifyExit to the interface
0xfornax Mar 19, 2025
50776cc
Fix name
0xfornax Mar 19, 2025
d279c20
Adjust return type
0xfornax Mar 19, 2025
4696997
Remove NodeCapital
thomaspanf Mar 24, 2025
8cdf187
Add bindings for getExitingValidatorCount and getSoonestWithdrawableE…
thomaspanf Mar 24, 2025
141fa81
Add new fields to ValidatorInfo struct
thomaspanf Mar 24, 2025
3d1be70
Add bindings and update interface for NotifyFinalBalance
thomaspanf Mar 25, 2025
4423b23
Update Withdrawal type to match beacon chain spec
thomaspanf Mar 26, 2025
b9e89e4
Update Stake and EstimateStakeGas signature
thomaspanf Mar 26, 2025
1b64248
Add ClaimRefund
0xfornax Apr 4, 2025
8aadbd8
Add ClaimRefund to interface
0xfornax Apr 4, 2025
80e4fd3
Add NodeComissionShareSecurityCouncilAdder
0xfornax Apr 4, 2025
d1cf1d4
Fix estimate function name
0xfornax Apr 4, 2025
3f7df25
Add reduceBond function
0xfornax Apr 7, 2025
9200a03
Add ActiveValidatorCount to getNodeMegapoolDetails
0xfornax Apr 8, 2025
b773578
Add megapool Penalise
0xfornax Apr 15, 2025
29d33b2
Remove penalise from interface
0xfornax Apr 15, 2025
25919fb
Update megapool encoded abi, add WithdrawableEpoch to ValidatorInfo
thomaspanf Apr 17, 2025
1b5bee8
Add fields to validator info
0xfornax Apr 26, 2025
403b19d
Merge branch 'master' into saturn
0xfornax May 16, 2025
bf23faa
Merge branch 'master' into saturn
0xfornax May 21, 2025
2b6a267
Merge branch 'master' into saturn
0xfornax May 21, 2025
046e17e
Move everything into bindings directory to prepare for monorepo trans…
jshufro May 21, 2025
bc631c9
Merge remote-tracking branch 'rocketpool-go/saturn' into jms/monorepo…
jshufro May 21, 2025
25da437
Merge branch 'master' into jms/monorepo-saturn
jshufro May 21, 2025
4f526e7
Merge branch 'jms/monorepo' into jms/monorepo-saturn
jshufro May 21, 2025
6866f53
Run goimports
jshufro May 21, 2025
88472ed
Merge branch 'master' into jms/monorepo-saturn
jshufro May 21, 2025
d8e5409
Merge branch 'master' into jms/monorepo-saturn
jshufro May 21, 2025
df5a905
Merge branch 'saturn' into jms/monorepo-saturn
jshufro May 21, 2025
db6f30d
Merge branch 'saturn' into jms/monorepo-saturn
jshufro May 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
674 changes: 674 additions & 0 deletions bindings/LICENSE

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions bindings/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# rocketpool-go
A Golang library for interacting with the Rocket Pool network.
36 changes: 36 additions & 0 deletions bindings/azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Go
# Build your Go project.
# Add steps that test, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/go

trigger:
branches:
include:
- '*'
- refs/tags/*

pool:
vmImage: ubuntu-latest

steps:
- task: DownloadSecureFile@1
name: githubPEM
displayName: 'Download Github PEM'
inputs:
secureFile: 'rp-azure-pipeline-github.pem'
- bash: |
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;")
TOKEN=$(curl -s -X POST \
-H "Authorization: Bearer $PUSH_JWT" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/app/installations/$GITHUB_APP_INSTALLATION_ID/access_tokens \
| jq -r '.token')
git remote add github https://x-access-token:$TOKEN@github.com/rocket-pool/$REPO_NAME
git fetch github
git push github HEAD:$(Build.SourceBranch) -f --verbose
git push github HEAD:$(Build.SourceBranch) --tags --verbose
displayName: 'Push to Github'
env:
GITHUB_PEM_PATH: $(githubPEM.secureFilePath)
GITHUB_APP_ID: $(GITHUB_APP_ID)
GITHUB_APP_INSTALLATION_ID: $(GITHUB_APP_INSTALLATION_ID)
89 changes: 89 additions & 0 deletions bindings/deposit/deposit-pool.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package deposit

import (
"fmt"
"math/big"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/rocket-pool/smartnode/bindings/rocketpool"
)

// Estimate the gas required to exit the validator queue
func EstimateExitQueueGas(rp *rocketpool.RocketPool, validatorIndex uint64, expressQueue bool, opts *bind.TransactOpts) (rocketpool.GasInfo, error) {
rocketDepositPool, err := getRocketDepositPool(rp, nil)
if err != nil {
return rocketpool.GasInfo{}, err
}
validatorIndexBig := big.NewInt(int64(validatorIndex))
return rocketDepositPool.GetTransactionGasInfo(opts, "exitQueue", validatorIndexBig, expressQueue)
}

// Exit the validator queue
func ExitQueue(rp *rocketpool.RocketPool, validatorIndex uint64, expressQueue bool, opts *bind.TransactOpts) (common.Hash, error) {
rocketDepositPool, err := getRocketDepositPool(rp, nil)
if err != nil {
return common.Hash{}, err
}
validatorIndexBig := big.NewInt(int64(validatorIndex))
tx, err := rocketDepositPool.Transact(opts, "exitQueue", validatorIndexBig, expressQueue)
if err != nil {
return common.Hash{}, fmt.Errorf("error exiting validator queue: %w", err)
}
return tx.Hash(), nil
}

// Struct to hold queue top (address of the validator at the top of the queue and a boolean indicating if the assignment is possible)
type QueueTop struct {
Receiver common.Address `abi:"receiver"`
AssignmentPossible bool `abi:"assignmentPossible"`
HeadMovedBlock *big.Int `abi:"headMovedBlock"`
}

func GetQueueTop(rp *rocketpool.RocketPool, opts *bind.CallOpts) (QueueTop, error) {
rocketDepositPool, err := getRocketDepositPool(rp, opts)
if err != nil {
return QueueTop{}, err
}
queueTop := new(QueueTop)
if err := rocketDepositPool.Call(opts, queueTop, "getQueueTop"); err != nil {
return QueueTop{}, fmt.Errorf("error getting queue top: %w", err)
}
return *queueTop, nil
}

func GetTotalQueueLength(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint32, error) {
rocketDepositPool, err := getRocketDepositPool(rp, opts)
if err != nil {
return 0, err
}
totalLength := new(*big.Int)
if err := rocketDepositPool.Call(opts, totalLength, "getTotalQueueLength"); err != nil {
return 0, fmt.Errorf("error getting total queue length: %w", err)
}
return uint32((*totalLength).Uint64()), nil
}

func GetExpressQueueLength(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint32, error) {
rocketDepositPool, err := getRocketDepositPool(rp, opts)
if err != nil {
return 0, err
}
length := new(*big.Int)
if err := rocketDepositPool.Call(opts, length, "getExpressQueueLength"); err != nil {
return 0, fmt.Errorf("error getting express queue length: %w", err)
}
return uint32((*length).Uint64()), nil
}

func GetStandardQueueLength(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint32, error) {
rocketDepositPool, err := getRocketDepositPool(rp, opts)
if err != nil {
return 0, err
}
length := new(*big.Int)
if err := rocketDepositPool.Call(opts, length, "getStandardQueueLength"); err != nil {
return 0, fmt.Errorf("error getting standard queue length: %w", err)
}
return uint32((*length).Uint64()), nil
}
16 changes: 12 additions & 4 deletions bindings/deposit/deposit.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,21 +73,21 @@ func Deposit(rp *rocketpool.RocketPool, opts *bind.TransactOpts) (common.Hash, e
}

// Estimate the gas of AssignDeposits
func EstimateAssignDepositsGas(rp *rocketpool.RocketPool, opts *bind.TransactOpts) (rocketpool.GasInfo, error) {
func EstimateAssignDepositsGas(rp *rocketpool.RocketPool, max *big.Int, opts *bind.TransactOpts) (rocketpool.GasInfo, error) {
rocketDepositPool, err := getRocketDepositPool(rp, nil)
if err != nil {
return rocketpool.GasInfo{}, err
}
return rocketDepositPool.GetTransactionGasInfo(opts, "assignDeposits")
return rocketDepositPool.GetTransactionGasInfo(opts, "assignDeposits", max)
}

// Assign deposits
func AssignDeposits(rp *rocketpool.RocketPool, opts *bind.TransactOpts) (common.Hash, error) {
func AssignDeposits(rp *rocketpool.RocketPool, max *big.Int, opts *bind.TransactOpts) (common.Hash, error) {
rocketDepositPool, err := getRocketDepositPool(rp, nil)
if err != nil {
return common.Hash{}, err
}
tx, err := rocketDepositPool.Transact(opts, "assignDeposits")
tx, err := rocketDepositPool.Transact(opts, "assignDeposits", max)
if err != nil {
return common.Hash{}, fmt.Errorf("error assigning deposits: %w", err)
}
Expand All @@ -102,3 +102,11 @@ func getRocketDepositPool(rp *rocketpool.RocketPool, opts *bind.CallOpts) (*rock
defer rocketDepositPoolLock.Unlock()
return rp.GetContract("rocketDepositPool", opts)
}

func GetRocketDepositPoolVersion(rp *rocketpool.RocketPool, opts *bind.CallOpts) (uint8, error) {
rocketDepositPool, err := getRocketDepositPool(rp, opts)
if err != nil {
return 0, err
}
return rocketpool.GetContractVersion(rp, *rocketDepositPool.Address, opts)
}
9 changes: 5 additions & 4 deletions bindings/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ require (
github.com/bits-and-blooms/bitset v1.11.0 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
github.com/cespare/cp v1.1.1 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cheggaaa/pb/v3 v3.0.8 // indirect
github.com/cockroachdb/errors v1.11.1 // indirect
Expand All @@ -27,12 +28,13 @@ require (
github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
github.com/dgraph-io/ristretto v0.1.0 // indirect
github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/emirpasic/gods v1.12.0 // indirect
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
github.com/fatih/color v1.14.1 // indirect
github.com/ferranbt/fastssz v0.1.3 // indirect
github.com/ferranbt/fastssz v0.1.4 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect
github.com/getsentry/sentry-go v0.25.0 // indirect
Expand All @@ -41,7 +43,6 @@ require (
github.com/go-git/go-git/v5 v5.3.0 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-stack/stack v1.8.1 // indirect
github.com/golang/glog v1.1.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/holiman/uint256 v1.2.4 // indirect
Expand All @@ -63,7 +64,6 @@ require (
github.com/pkg/errors v0.9.1 // indirect
github.com/princjef/mageutil v1.0.0 // indirect
github.com/prometheus/client_golang v1.20.0 // indirect
github.com/protolambda/zssz v0.1.5 // indirect
github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
Expand All @@ -72,6 +72,7 @@ require (
github.com/sergi/go-diff v1.2.0 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/stretchr/testify v1.9.0 // indirect
github.com/supranational/blst v0.3.11 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
Expand Down
Loading
Loading