From 02b1cf2cef325ecfaab83ff45bfca4d19f9399e9 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 16:24:11 -0300 Subject: [PATCH 01/27] update bindings --- .../eigenpod/bindings/IEigenPodManager.go | 188 +++++++++++++++++- 1 file changed, 187 insertions(+), 1 deletion(-) diff --git a/chainio/clients/eigenpod/bindings/IEigenPodManager.go b/chainio/clients/eigenpod/bindings/IEigenPodManager.go index 8fb2afa7e..03326c77a 100644 --- a/chainio/clients/eigenpod/bindings/IEigenPodManager.go +++ b/chainio/clients/eigenpod/bindings/IEigenPodManager.go @@ -31,7 +31,7 @@ var ( // IEigenPodManagerMetaData contains all meta data concerning the IEigenPodManager contract. var IEigenPodManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]", } // IEigenPodManagerABI is the input ABI used to generate the binding from. @@ -242,6 +242,37 @@ func (_IEigenPodManager *IEigenPodManagerCallerSession) BeaconChainSlashingFacto return _IEigenPodManager.Contract.BeaconChainSlashingFactor(&_IEigenPodManager.CallOpts, staker) } +// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3. +// +// Solidity: function burnableETHShares() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerCaller) BurnableETHShares(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "burnableETHShares") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3. +// +// Solidity: function burnableETHShares() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerSession) BurnableETHShares() (*big.Int, error) { + return _IEigenPodManager.Contract.BurnableETHShares(&_IEigenPodManager.CallOpts) +} + +// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3. +// +// Solidity: function burnableETHShares() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerCallerSession) BurnableETHShares() (*big.Int, error) { + return _IEigenPodManager.Contract.BurnableETHShares(&_IEigenPodManager.CallOpts) +} + // EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. // // Solidity: function eigenPodBeacon() view returns(address) @@ -625,6 +656,27 @@ func (_IEigenPodManager *IEigenPodManagerTransactorSession) CreatePod() (*types. return _IEigenPodManager.Contract.CreatePod(&_IEigenPodManager.TransactOpts) } +// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab. +// +// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn) +} + +// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab. +// +// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns() +func (_IEigenPodManager *IEigenPodManagerSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.Contract.IncreaseBurnableShares(&_IEigenPodManager.TransactOpts, strategy, addedSharesToBurn) +} + +// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab. +// +// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.Contract.IncreaseBurnableShares(&_IEigenPodManager.TransactOpts, strategy, addedSharesToBurn) +} + // Pause is a paid mutator transaction binding the contract method 0x136439dd. // // Solidity: function pause(uint256 newPausedStatus) returns() @@ -1202,6 +1254,140 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBeaconChainSlashingFacto return event, nil } +// IEigenPodManagerBurnableETHSharesIncreasedIterator is returned from FilterBurnableETHSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableETHSharesIncreased events raised by the IEigenPodManager contract. +type IEigenPodManagerBurnableETHSharesIncreasedIterator struct { + Event *IEigenPodManagerBurnableETHSharesIncreased // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IEigenPodManagerBurnableETHSharesIncreasedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IEigenPodManagerBurnableETHSharesIncreased) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IEigenPodManagerBurnableETHSharesIncreased) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IEigenPodManagerBurnableETHSharesIncreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerBurnableETHSharesIncreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerBurnableETHSharesIncreased represents a BurnableETHSharesIncreased event raised by the IEigenPodManager contract. +type IEigenPodManagerBurnableETHSharesIncreased struct { + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurnableETHSharesIncreased is a free log retrieval operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4. +// +// Solidity: event BurnableETHSharesIncreased(uint256 shares) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterBurnableETHSharesIncreased(opts *bind.FilterOpts) (*IEigenPodManagerBurnableETHSharesIncreasedIterator, error) { + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "BurnableETHSharesIncreased") + if err != nil { + return nil, err + } + return &IEigenPodManagerBurnableETHSharesIncreasedIterator{contract: _IEigenPodManager.contract, event: "BurnableETHSharesIncreased", logs: logs, sub: sub}, nil +} + +// WatchBurnableETHSharesIncreased is a free log subscription operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4. +// +// Solidity: event BurnableETHSharesIncreased(uint256 shares) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchBurnableETHSharesIncreased(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerBurnableETHSharesIncreased) (event.Subscription, error) { + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "BurnableETHSharesIncreased") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IEigenPodManagerBurnableETHSharesIncreased) + if err := _IEigenPodManager.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurnableETHSharesIncreased is a log parse operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4. +// +// Solidity: event BurnableETHSharesIncreased(uint256 shares) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBurnableETHSharesIncreased(log types.Log) (*IEigenPodManagerBurnableETHSharesIncreased, error) { + event := new(IEigenPodManagerBurnableETHSharesIncreased) + if err := _IEigenPodManager.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // IEigenPodManagerNewTotalSharesIterator is returned from FilterNewTotalShares and is used to iterate over the raw logs and unpacked data for NewTotalShares events raised by the IEigenPodManager contract. type IEigenPodManagerNewTotalSharesIterator struct { Event *IEigenPodManagerNewTotalShares // Event containing the contract specifics and raw log From ed18c355ea915f9aa55655176d9cc217afe96408 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 16:00:39 -0300 Subject: [PATCH 02/27] add ci job to check the bindings --- .github/workflows/bindings.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/bindings.yml diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml new file mode 100644 index 000000000..ec54b79fb --- /dev/null +++ b/.github/workflows/bindings.yml @@ -0,0 +1,30 @@ +name: Bindings + +on: + push: + branches: [main] + pull_request: + branches: [ '**' ] + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Check bindings are up to date + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Generate new bindings + run: | + make bindings_host + + - name: Compare bindings + run: git diff --exit-code From 83fafb08d3342a493758297a194b167f88fc3517 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 16:06:06 -0300 Subject: [PATCH 03/27] fix target in job --- .github/workflows/bindings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index ec54b79fb..5157af2f2 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -24,7 +24,7 @@ jobs: - name: Generate new bindings run: | - make bindings_host + make bindings - name: Compare bindings run: git diff --exit-code From c59e338a64832f45e3b62f1c47cf2066dd610dec Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 16:11:51 -0300 Subject: [PATCH 04/27] add step to install foundry --- .github/workflows/bindings.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 5157af2f2..af2f96243 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -2,12 +2,9 @@ name: Bindings on: push: - branches: [main] + branches: + - dev pull_request: - branches: [ '**' ] - -env: - FOUNDRY_PROFILE: ci jobs: check: @@ -22,9 +19,13 @@ jobs: with: submodules: recursive + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: v0.3.0 + - name: Generate new bindings - run: | - make bindings + run: make bindings - name: Compare bindings run: git diff --exit-code From 3b2d640b03caefd862105224c7ba131341a67e58 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 16:52:17 -0300 Subject: [PATCH 05/27] change generate.sh script to exit on error --- chainio/clients/eigenpod/generate.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chainio/clients/eigenpod/generate.sh b/chainio/clients/eigenpod/generate.sh index ad8c97b74..59c53f992 100755 --- a/chainio/clients/eigenpod/generate.sh +++ b/chainio/clients/eigenpod/generate.sh @@ -6,6 +6,8 @@ # of the EigenPods client, we need to generate the bindings for the contracts in the feat/partial-withdrawal-batching branch. # Once eigenlayer-contracts repo is stable and features are on single branch, we can move the bindings back to normal process +set -e + TMP_DIR=$(mktemp -d) BINDINGS_DIR=bindings @@ -56,4 +58,4 @@ main() { cleanup } -main \ No newline at end of file +main From afbbf5abd3cecbe6e3522cf43455a7a23ca67389 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 17:17:13 -0300 Subject: [PATCH 06/27] remove git clone when generating eigenpod bindings --- chainio/clients/eigenpod/generate.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chainio/clients/eigenpod/generate.sh b/chainio/clients/eigenpod/generate.sh index 59c53f992..276c591e8 100755 --- a/chainio/clients/eigenpod/generate.sh +++ b/chainio/clients/eigenpod/generate.sh @@ -18,11 +18,14 @@ cleanup_bindings_dir() { clone() { echo "Cloning the EigenLayer contracts repository" - git clone -b slashing-magnitudes --depth=1 git@github.com:Layr-Labs/eigenlayer-contracts.git "${TMP_DIR}" + # change eigenlayer-contracts to the slashing-magnitudes branch and copy it to a temporal directory + cd ../../../contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/ && git checkout slashing-magnitudes + cp -r . $TMP_DIR } generate_bindings() { echo "Generating bindings for the EigenPods contracts" + pwd current_dir=$(pwd) cd "${TMP_DIR}" && make bindings # shellcheck disable=SC2164 From 2014a04eab29dfcef9948799af50826cc30a8b88 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 17:36:20 -0300 Subject: [PATCH 07/27] clone eigenlayer-contracts using https url --- chainio/clients/eigenpod/generate.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/chainio/clients/eigenpod/generate.sh b/chainio/clients/eigenpod/generate.sh index 276c591e8..820b0c36f 100755 --- a/chainio/clients/eigenpod/generate.sh +++ b/chainio/clients/eigenpod/generate.sh @@ -18,9 +18,7 @@ cleanup_bindings_dir() { clone() { echo "Cloning the EigenLayer contracts repository" - # change eigenlayer-contracts to the slashing-magnitudes branch and copy it to a temporal directory - cd ../../../contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts/ && git checkout slashing-magnitudes - cp -r . $TMP_DIR + git clone -b slashing-magnitudes --depth=1 https://github.com/Layr-Labs/eigensdk-go.git "${TMP_DIR}" } generate_bindings() { From a93e298e4a553596fa628c512e0d7f0b3646afac Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 17:40:03 -0300 Subject: [PATCH 08/27] fix eigenlayer-contracts url --- chainio/clients/eigenpod/generate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chainio/clients/eigenpod/generate.sh b/chainio/clients/eigenpod/generate.sh index 820b0c36f..72993d904 100755 --- a/chainio/clients/eigenpod/generate.sh +++ b/chainio/clients/eigenpod/generate.sh @@ -18,7 +18,7 @@ cleanup_bindings_dir() { clone() { echo "Cloning the EigenLayer contracts repository" - git clone -b slashing-magnitudes --depth=1 https://github.com/Layr-Labs/eigensdk-go.git "${TMP_DIR}" + git clone -b slashing-magnitudes --depth=1 https://github.com/Layr-Labs/eigenlayer-contracts.git "${TMP_DIR}" } generate_bindings() { From cdf625a7d3200ef66cdb1ac39709bed700378faf Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 17:47:22 -0300 Subject: [PATCH 09/27] add steps to install go and abigen --- .github/workflows/bindings.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index af2f96243..a02f4e70f 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -18,7 +18,18 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive - + + - name: Install go1.21 + uses: actions/setup-go@v5 + with: + go-version: "1.21" + + - name: Add Ethereum PPA + run: sudo add-apt-repository -y ppa:ethereum/ethereum + + - name: Install Abigen + run: sudo apt-get update && sudo apt-get install ethereum + - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: From 52600491bb987c7fc7e7665672ba95246c35bd8a Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 18:03:35 -0300 Subject: [PATCH 10/27] run git diff with sudo --- .github/workflows/bindings.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index a02f4e70f..d4cd8b16c 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -6,6 +6,9 @@ on: - dev pull_request: +permissions: + contents: read + jobs: check: strategy: @@ -35,8 +38,13 @@ jobs: with: version: v0.3.0 - - name: Generate new bindings - run: make bindings - - - name: Compare bindings - run: git diff --exit-code + - name: run make bindings and check for diffs + run: | + make bindings + # sudo required due to bindings being owned by root + if [ ! -z "$(sudo git status --porcelain)" ]; then + printf "Current generated bindings not up to date\n" + sudo git diff + sudo git status + exit 1 + fi From 65b41b6da5fdfc23345111f6dd2430165483b014 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 18:27:35 -0300 Subject: [PATCH 11/27] add step to show abigen version --- .github/workflows/bindings.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index d4cd8b16c..f63ed8cff 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -33,6 +33,9 @@ jobs: - name: Install Abigen run: sudo apt-get update && sudo apt-get install ethereum + - name: Show abigen version + run: abigen --version + - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: From 1fe725448cf5b285f07a8037370ca29cbd2bb054 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 18:33:55 -0300 Subject: [PATCH 12/27] change ubuntu version to 22.04 --- .github/workflows/bindings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index f63ed8cff..44ab35e4e 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -15,7 +15,7 @@ jobs: fail-fast: true name: Check bindings are up to date - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 From 211180945764cf88eb5fc3af7e781f982e55ef4e Mon Sep 17 00:00:00 2001 From: ricomateo Date: Mon, 27 Jan 2025 18:40:55 -0300 Subject: [PATCH 13/27] remove unnecessary pwd --- chainio/clients/eigenpod/generate.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/chainio/clients/eigenpod/generate.sh b/chainio/clients/eigenpod/generate.sh index 72993d904..78cd21ac2 100755 --- a/chainio/clients/eigenpod/generate.sh +++ b/chainio/clients/eigenpod/generate.sh @@ -23,7 +23,6 @@ clone() { generate_bindings() { echo "Generating bindings for the EigenPods contracts" - pwd current_dir=$(pwd) cd "${TMP_DIR}" && make bindings # shellcheck disable=SC2164 From 03c7a7ffc835cfcde11bca9f572693c562bb4a80 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Tue, 28 Jan 2025 11:40:01 -0300 Subject: [PATCH 14/27] check the diff with git diff --- .github/workflows/bindings.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 44ab35e4e..068eb5d18 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -44,10 +44,4 @@ jobs: - name: run make bindings and check for diffs run: | make bindings - # sudo required due to bindings being owned by root - if [ ! -z "$(sudo git status --porcelain)" ]; then - printf "Current generated bindings not up to date\n" - sudo git diff - sudo git status - exit 1 - fi + sudo git diff --exit-code From 589fafb688ba1dbef236ef7ac3c0c38ee16e453c Mon Sep 17 00:00:00 2001 From: ricomateo Date: Tue, 28 Jan 2025 11:41:21 -0300 Subject: [PATCH 15/27] remove fail-fast and add merge_group --- .github/workflows/bindings.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 068eb5d18..da56d11df 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -5,15 +5,13 @@ on: branches: - dev pull_request: - + merge_group: + permissions: contents: read jobs: check: - strategy: - fail-fast: true - name: Check bindings are up to date runs-on: ubuntu-22.04 From 2835753ddc94ca9dd0e7176d6be5bdde68170f17 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 10:10:27 -0300 Subject: [PATCH 16/27] change ubuntu to latest --- .github/workflows/bindings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index da56d11df..f32be1fd7 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -13,7 +13,7 @@ permissions: jobs: check: name: Check bindings are up to date - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From be717e664971480e2814830bc2351abf0ac8809b Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 10:28:51 -0300 Subject: [PATCH 17/27] unpin solc version --- contracts/foundry.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 5f3773b6c..90832583a 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -2,7 +2,6 @@ src = "src" out = "out" libs = ["lib"] -solc_version = '0.8.27' via-ir = true optimizer = true optimizer_runs = 200 From 75af45b9b05dff1d844f124b83633a794167bf05 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 11:55:18 -0300 Subject: [PATCH 18/27] check the bindings are up-to-date only when the contracts change --- .github/workflows/bindings.yml | 41 +++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index f32be1fd7..d389da77c 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -11,8 +11,8 @@ permissions: contents: read jobs: - check: - name: Check bindings are up to date + generate_bindings: + name: Generate bindings runs-on: ubuntu-latest steps: @@ -39,7 +39,38 @@ jobs: with: version: v0.3.0 - - name: run make bindings and check for diffs + - name: Run make bindings + run: make bindings + + check_bindings: + name: Check bindings are up-to-date + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + # This step is needed to know if the contracts were changed. + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + contracts: + - 'contracts/lib/**' + - 'contracts/script/**' + - 'contracts/src/**' + + # This step runs only if some contract changed. + # It checks the diff in the bindings directory. + # If the diff is null, that means the bindings have not changed, + # i.e. the bindings are outdated and therefore this step will fail. + # Note: if the git diff fails to fetch the changes, then the step will also fail. + - name: Check the anvil dump has changed + if: steps.filter.outputs.contracts == 'true' + working-directory: contracts/ run: | - make bindings - sudo git diff --exit-code + if [ -z "$(git diff origin/${{ github.event.pull_request.base.ref }} -- bindings)" ]; then + echo "The bindings are outdated"; + exit 1 + fi \ No newline at end of file From 47350d38f2dff93ed356fbea936aa75df6e145f0 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:34:09 -0300 Subject: [PATCH 19/27] revert changes to foundry.toml --- contracts/foundry.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 90832583a..5f3773b6c 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -2,6 +2,7 @@ src = "src" out = "out" libs = ["lib"] +solc_version = '0.8.27' via-ir = true optimizer = true optimizer_runs = 200 From d8cb9b1c06f512b72bde389082d1f1c733e54f89 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:35:31 -0300 Subject: [PATCH 20/27] add end of line in bindings.yml --- .github/workflows/bindings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index d389da77c..2de68a28f 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -73,4 +73,4 @@ jobs: if [ -z "$(git diff origin/${{ github.event.pull_request.base.ref }} -- bindings)" ]; then echo "The bindings are outdated"; exit 1 - fi \ No newline at end of file + fi From 58b0c8d8617bc00f3dea4ab850c55e114f6e5f2c Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:36:22 -0300 Subject: [PATCH 21/27] change a contract to check if the job is triggered --- contracts/src/MockERC20.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/MockERC20.sol b/contracts/src/MockERC20.sol index 1b5cdcd96..2609a5643 100644 --- a/contracts/src/MockERC20.sol +++ b/contracts/src/MockERC20.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.12; import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -contract MockERC20 is ERC20("Mock Token", "MCK") { +contract MockERC20 is ERC20("Mock Token", "MOCK") { function mint(address account, uint256 amount) public { _mint(account, amount); } From 28a620e51942f3967936e056b33760a746c1db4b Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:45:09 -0300 Subject: [PATCH 22/27] check if bindings have changed using the action --- .github/workflows/bindings.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 2de68a28f..ad19c6b0a 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -60,6 +60,9 @@ jobs: - 'contracts/lib/**' - 'contracts/script/**' - 'contracts/src/**' + bindings: + - 'contracts/bindings/**' + # This step runs only if some contract changed. # It checks the diff in the bindings directory. @@ -70,7 +73,9 @@ jobs: if: steps.filter.outputs.contracts == 'true' working-directory: contracts/ run: | - if [ -z "$(git diff origin/${{ github.event.pull_request.base.ref }} -- bindings)" ]; then + BINDINGS_UPDATED=${{ steps.filter.outputs.bindings }} + echo $BINDINGS_UPDATED + if [ $BINDINGS_UPDATED -ne 'true' ]; then echo "The bindings are outdated"; exit 1 fi From 668d0b1091778c5563e56fd6f79f3ccaeebfbbd6 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:48:09 -0300 Subject: [PATCH 23/27] fix if condition --- .github/workflows/bindings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index ad19c6b0a..dfafe0837 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -75,7 +75,7 @@ jobs: run: | BINDINGS_UPDATED=${{ steps.filter.outputs.bindings }} echo $BINDINGS_UPDATED - if [ $BINDINGS_UPDATED -ne 'true' ]; then + if [[ "$BINDINGS_UPDATED" == "false" ]]; then echo "The bindings are outdated"; exit 1 fi From b2b86eb21cbed581bbd035ac5e2626e9762be276 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:50:18 -0300 Subject: [PATCH 24/27] change binding to check if the job passes --- .github/workflows/bindings.yml | 2 -- contracts/bindings/BLSApkRegistry/binding.go | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index dfafe0837..9312ba4e2 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -71,10 +71,8 @@ jobs: # Note: if the git diff fails to fetch the changes, then the step will also fail. - name: Check the anvil dump has changed if: steps.filter.outputs.contracts == 'true' - working-directory: contracts/ run: | BINDINGS_UPDATED=${{ steps.filter.outputs.bindings }} - echo $BINDINGS_UPDATED if [[ "$BINDINGS_UPDATED" == "false" ]]; then echo "The bindings are outdated"; exit 1 diff --git a/contracts/bindings/BLSApkRegistry/binding.go b/contracts/bindings/BLSApkRegistry/binding.go index 27ad4a9ce..b0615bee8 100644 --- a/contracts/bindings/BLSApkRegistry/binding.go +++ b/contracts/bindings/BLSApkRegistry/binding.go @@ -1,3 +1,4 @@ + // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. From b4ac3c35c7eec4ccc54714b1d59f1b58cdc11904 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:52:08 -0300 Subject: [PATCH 25/27] fix step name --- .github/workflows/bindings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 9312ba4e2..31a5ed032 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -69,7 +69,7 @@ jobs: # If the diff is null, that means the bindings have not changed, # i.e. the bindings are outdated and therefore this step will fail. # Note: if the git diff fails to fetch the changes, then the step will also fail. - - name: Check the anvil dump has changed + - name: Check the bindings are up-to-date if: steps.filter.outputs.contracts == 'true' run: | BINDINGS_UPDATED=${{ steps.filter.outputs.bindings }} From 0d11d405d944315f1a2175d3bc604919490057e7 Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 12:52:52 -0300 Subject: [PATCH 26/27] revert changes to bindings and contracts --- contracts/bindings/BLSApkRegistry/binding.go | 1 - contracts/src/MockERC20.sol | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/contracts/bindings/BLSApkRegistry/binding.go b/contracts/bindings/BLSApkRegistry/binding.go index b0615bee8..27ad4a9ce 100644 --- a/contracts/bindings/BLSApkRegistry/binding.go +++ b/contracts/bindings/BLSApkRegistry/binding.go @@ -1,4 +1,3 @@ - // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. diff --git a/contracts/src/MockERC20.sol b/contracts/src/MockERC20.sol index 2609a5643..1b5cdcd96 100644 --- a/contracts/src/MockERC20.sol +++ b/contracts/src/MockERC20.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.12; import {ERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -contract MockERC20 is ERC20("Mock Token", "MOCK") { +contract MockERC20 is ERC20("Mock Token", "MCK") { function mint(address account, uint256 amount) public { _mint(account, amount); } From 69d18bbee4c4091e7140d9e654e9c8c65d6ca06d Mon Sep 17 00:00:00 2001 From: ricomateo Date: Thu, 30 Jan 2025 13:12:41 -0300 Subject: [PATCH 27/27] update doc comment in the workflow --- .github/workflows/bindings.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 31a5ed032..c83d0dfa6 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -65,10 +65,9 @@ jobs: # This step runs only if some contract changed. - # It checks the diff in the bindings directory. - # If the diff is null, that means the bindings have not changed, - # i.e. the bindings are outdated and therefore this step will fail. - # Note: if the git diff fails to fetch the changes, then the step will also fail. + # It checks whether the bindings directory have changed. + # If there are no changes, then the bindings are outdated + # and therefore this step will fail. - name: Check the bindings are up-to-date if: steps.filter.outputs.contracts == 'true' run: |