Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove liquid staking from stakingV4 #4935

Merged
merged 4 commits into from
Feb 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV1.toml
Expand Up @@ -39,7 +39,6 @@
ValidatorToDelegation = 500000000
GetAllNodeStates = 100000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 50000
Expand Down
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV2.toml
Expand Up @@ -39,7 +39,6 @@
ValidatorToDelegation = 500000000
GetAllNodeStates = 100000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 50000
Expand Down
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV3.toml
Expand Up @@ -39,7 +39,6 @@
UnstakeTokens = 5000000
UnbondTokens = 5000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 50000
Expand Down
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV4.toml
Expand Up @@ -39,7 +39,6 @@
UnstakeTokens = 5000000
UnbondTokens = 5000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 10000
Expand Down
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV5.toml
Expand Up @@ -39,7 +39,6 @@
UnstakeTokens = 5000000
UnbondTokens = 5000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 10000
Expand Down
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV6.toml
Expand Up @@ -39,7 +39,6 @@
UnstakeTokens = 5000000
UnbondTokens = 5000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 10000
Expand Down
1 change: 0 additions & 1 deletion cmd/node/config/gasSchedules/gasScheduleV7.toml
Expand Up @@ -40,7 +40,6 @@
UnstakeTokens = 5000000
UnbondTokens = 5000000
FixWaitingListSize = 500000000
LiquidStakingOps = 10000000

[BaseOperationCost]
StorePerByte = 10000
Expand Down
2 changes: 0 additions & 2 deletions common/enablers/enableEpochsHandler.go
Expand Up @@ -121,9 +121,7 @@ func (handler *enableEpochsHandler) EpochConfirmed(epoch uint32, _ uint64) {
handler.setFlagValue(epoch == handler.enableEpochsConfig.StakingV4InitEnableEpoch, handler.stakingV4InitFlag, "stakingV4InitFlag")
handler.setFlagValue(epoch >= handler.enableEpochsConfig.StakingV4EnableEpoch, handler.stakingV4Flag, "stakingV4Flag")
handler.setFlagValue(epoch >= handler.enableEpochsConfig.StakingV4DistributeAuctionToWaitingEpoch, handler.stakingV4DistributeAuctionToWaitingFlag, "stakingV4DistributeAuctionToWaitingFlag")
handler.setFlagValue(epoch == handler.enableEpochsConfig.BuiltInFunctionOnMetaEnableEpoch, handler.initLiquidStakingFlag, "initLiquidStakingFlag")
handler.setFlagValue(epoch < handler.enableEpochsConfig.StakingV4InitEnableEpoch, handler.stakingQueueEnabledFlag, "stakingQueueEnabledFlag")
handler.setFlagValue(epoch >= handler.enableEpochsConfig.BuiltInFunctionOnMetaEnableEpoch, handler.liquidStakingFlag, "liquidStakingFlag")
handler.setFlagValue(epoch >= handler.enableEpochsConfig.StakingV4InitEnableEpoch, handler.stakingV4StartedFlag, "stakingV4StartedFlag")
}

Expand Down
6 changes: 0 additions & 6 deletions common/enablers/enableEpochsHandler_test.go
Expand Up @@ -220,8 +220,6 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.True(t, handler.IsStakingV4Enabled())
assert.True(t, handler.IsStakingV4DistributeAuctionToWaitingEnabled())
assert.False(t, handler.IsStakingQueueEnabled())
assert.False(t, handler.IsInitLiquidStakingEnabled())
assert.True(t, handler.IsLiquidStakingEnabled())
assert.True(t, handler.IsStakingV4Started())
})
t.Run("flags with == condition should be set, along with all >=", func(t *testing.T) {
Expand Down Expand Up @@ -329,8 +327,6 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.True(t, handler.IsStakingV4Enabled())
assert.True(t, handler.IsStakingV4DistributeAuctionToWaitingEnabled())
assert.False(t, handler.IsStakingQueueEnabled())
assert.True(t, handler.IsInitLiquidStakingEnabled())
assert.True(t, handler.IsLiquidStakingEnabled())
assert.True(t, handler.IsStakingV4Started())
})
t.Run("flags with < should be set", func(t *testing.T) {
Expand Down Expand Up @@ -431,8 +427,6 @@ func TestNewEnableEpochsHandler_EpochConfirmed(t *testing.T) {
assert.False(t, handler.IsStakingV4Enabled())
assert.False(t, handler.IsStakingV4DistributeAuctionToWaitingEnabled())
assert.True(t, handler.IsStakingQueueEnabled())
assert.False(t, handler.IsInitLiquidStakingEnabled())
assert.False(t, handler.IsLiquidStakingEnabled())
assert.False(t, handler.IsStakingV4Started())
})
}
16 changes: 1 addition & 15 deletions common/enablers/epochFlags.go
Expand Up @@ -94,8 +94,6 @@ type epochFlagsHolder struct {
stakingV4Flag *atomic.Flag
stakingV4DistributeAuctionToWaitingFlag *atomic.Flag
stakingQueueEnabledFlag *atomic.Flag
initLiquidStakingFlag *atomic.Flag
liquidStakingFlag *atomic.Flag
stakingV4StartedFlag *atomic.Flag
}

Expand Down Expand Up @@ -190,8 +188,6 @@ func newEpochFlagsHolder() *epochFlagsHolder {
stakingV4Flag: &atomic.Flag{},
stakingV4DistributeAuctionToWaitingFlag: &atomic.Flag{},
stakingQueueEnabledFlag: &atomic.Flag{},
initLiquidStakingFlag: &atomic.Flag{},
liquidStakingFlag: &atomic.Flag{},
stakingV4StartedFlag: &atomic.Flag{},
}
}
Expand Down Expand Up @@ -689,22 +685,12 @@ func (holder *epochFlagsHolder) IsStakingV4DistributeAuctionToWaitingEnabled() b
return holder.stakingV4DistributeAuctionToWaitingFlag.IsSet()
}

// IsInitLiquidStakingEnabled returns true if initLiquidStakingFlag is enabled
func (holder *epochFlagsHolder) IsInitLiquidStakingEnabled() bool {
return holder.initLiquidStakingFlag.IsSet()
}

// IsStakingQueueEnabled returns true if stakingQueueEnabledFlag is enabled
func (holder *epochFlagsHolder) IsStakingQueueEnabled() bool {
return holder.stakingQueueEnabledFlag.IsSet()
}

// IsLiquidStakingEnabled returns true if liquidStakingFlag is enabled
func (holder *epochFlagsHolder) IsLiquidStakingEnabled() bool {
return holder.liquidStakingFlag.IsSet()
}

// IsStakingV4Started returns true if liquidStakingFlag is enabled
// IsStakingV4Started returns true if stakingV4StartedFlag is enabled
func (holder *epochFlagsHolder) IsStakingV4Started() bool {
return holder.stakingV4StartedFlag.IsSet()
}
2 changes: 0 additions & 2 deletions common/interface.go
Expand Up @@ -341,9 +341,7 @@ type EnableEpochsHandler interface {
IsStakingV4InitEnabled() bool
IsStakingV4Enabled() bool
IsStakingV4DistributeAuctionToWaitingEnabled() bool
IsInitLiquidStakingEnabled() bool
IsStakingQueueEnabled() bool
IsLiquidStakingEnabled() bool
IsStakingV4Started() bool

IsInterfaceNil() bool
Expand Down
3 changes: 0 additions & 3 deletions epochStart/errors.go
Expand Up @@ -329,9 +329,6 @@ var ErrNilValidatorInfoStorage = errors.New("nil validator info storage")
// ErrNilTrieSyncStatistics signals that nil trie sync statistics has been provided
var ErrNilTrieSyncStatistics = errors.New("nil trie sync statistics")

// ErrCouldNotInitLiquidStakingSystemSC signals that liquid staking system sc init failed
var ErrCouldNotInitLiquidStakingSystemSC = errors.New("could not init liquid staking system sc")

// ErrReceivedNewListNodeInStakingV4 signals that a new node has been assigned in common.NewList instead of common.AuctionList after staking v4
var ErrReceivedNewListNodeInStakingV4 = errors.New("new node has been assigned in common.NewList instead of common.AuctionList after staking v4")

Expand Down
50 changes: 0 additions & 50 deletions epochStart/metachain/systemSCs.go
Expand Up @@ -120,18 +120,6 @@ func (s *systemSCProcessor) processWithNewFlags(
}
}

if s.enableEpochsHandler.IsInitLiquidStakingEnabled() {
tokenID, err := s.initTokenOnMeta()
if err != nil {
return err
}

err = s.initLiquidStakingSC(tokenID)
if err != nil {
return err
}
}

if s.enableEpochsHandler.IsStakingV4InitEnabled() {
err := s.stakeNodesFromQueue(validatorsInfoMap, math.MaxUint32, header.GetNonce(), common.AuctionList)
if err != nil {
Expand Down Expand Up @@ -255,44 +243,6 @@ func (s *systemSCProcessor) initTokenOnMeta() ([]byte, error) {
return vmOutput.ReturnData[0], nil
}

func (s *systemSCProcessor) initLiquidStakingSC(tokenID []byte) error {
codeMetaData := &vmcommon.CodeMetadata{
Upgradeable: false,
Payable: false,
Readable: true,
}

vmInput := &vmcommon.ContractCreateInput{
VMInput: vmcommon.VMInput{
CallerAddr: vm.LiquidStakingSCAddress,
Arguments: [][]byte{tokenID},
CallValue: big.NewInt(0),
},
ContractCode: vm.LiquidStakingSCAddress,
ContractCodeMetadata: codeMetaData.ToBytes(),
}

vmOutput, err := s.systemVM.RunSmartContractCreate(vmInput)
if err != nil {
return err
}
if vmOutput.ReturnCode != vmcommon.Ok {
return epochStart.ErrCouldNotInitLiquidStakingSystemSC
}

err = s.processSCOutputAccounts(vmOutput)
if err != nil {
return err
}

err = s.updateSystemSCContractsCode(vmInput.ContractCodeMetadata)
if err != nil {
return err
}

return nil
}

// IsInterfaceNil returns true if underlying object is nil
func (s *systemSCProcessor) IsInterfaceNil() bool {
return s == nil
Expand Down
3 changes: 0 additions & 3 deletions examples/address_test.go
Expand Up @@ -70,7 +70,6 @@ func TestSystemSCsAddressesAndSpecialAddresses(t *testing.T) {
endOfEpochAddress := addressEncoder.Encode(vm.EndOfEpochAddress)
delegationManagerScAddress := addressEncoder.Encode(vm.DelegationManagerSCAddress)
firstDelegationScAddress := addressEncoder.Encode(vm.FirstDelegationSCAddress)
liquidStakingSCAddress := addressEncoder.Encode(vm.LiquidStakingSCAddress)

genesisMintingAddressBytes, err := hex.DecodeString("f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0")
require.NoError(t, err)
Expand All @@ -92,7 +91,6 @@ func TestSystemSCsAddressesAndSpecialAddresses(t *testing.T) {
display.NewLineData(false, []string{"First delegation", firstDelegationScAddress}),
display.NewLineData(false, []string{"Genesis Minting Address", genesisMintingAddress}),
display.NewLineData(false, []string{"System Account Address", systemAccountAddress}),
display.NewLineData(false, []string{"Liquid staking", liquidStakingSCAddress}),
display.NewLineData(false, []string{"ESDT Global Settings Shard 0", esdtGlobalSettingsAddresses[0]}),
display.NewLineData(false, []string{"ESDT Global Settings Shard 1", esdtGlobalSettingsAddresses[1]}),
display.NewLineData(false, []string{"ESDT Global Settings Shard 2", esdtGlobalSettingsAddresses[2]}),
Expand All @@ -112,7 +110,6 @@ func TestSystemSCsAddressesAndSpecialAddresses(t *testing.T) {
assert.Equal(t, "erd1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6gq4hu", contractDeployScAdress)
assert.Equal(t, "erd17rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rcqqkhty3", genesisMintingAddress)
assert.Equal(t, "erd1lllllllllllllllllllllllllllllllllllllllllllllllllllsckry7t", systemAccountAddress)
assert.Equal(t, "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq9lllsm6xupm", liquidStakingSCAddress)
assert.Equal(t, "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", esdtGlobalSettingsAddresses[0])
assert.Equal(t, "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", esdtGlobalSettingsAddresses[1])
assert.Equal(t, "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", esdtGlobalSettingsAddresses[2])
Expand Down
68 changes: 0 additions & 68 deletions integrationTests/testProcessorNode.go
Expand Up @@ -6,7 +6,6 @@ import (
"encoding/hex"
"errors"
"fmt"
"math"
"math/big"
"strconv"
"sync"
Expand Down Expand Up @@ -1861,73 +1860,6 @@ func (tpn *TestProcessorNode) InitDelegationManager() {
log.LogIfError(err)
}

// InitLiquidStaking will initialize the liquid staking contract whenever required
func (tpn *TestProcessorNode) InitLiquidStaking() []byte {
if tpn.ShardCoordinator.SelfId() != core.MetachainShardId {
return nil
}

vmInput := &vmcommon.ContractCallInput{
VMInput: vmcommon.VMInput{
CallerAddr: vm.ESDTSCAddress,
CallValue: big.NewInt(0),
Arguments: [][]byte{},
GasProvided: math.MaxUint64,
},
RecipientAddr: vm.ESDTSCAddress,
Function: "initDelegationESDTOnMeta",
}

systemVM, err := tpn.VMContainer.Get(factory.SystemVirtualMachine)
log.LogIfError(err)

vmOutput, err := systemVM.RunSmartContractCall(vmInput)
log.LogIfError(err)
if vmOutput.ReturnCode != vmcommon.Ok {
log.Error("error while initializing system SC", "return code", vmOutput.ReturnCode)
}

err = ProcessSCOutputAccounts(vmOutput, tpn.AccntState)
log.LogIfError(err)

_, err = tpn.AccntState.Commit()
log.LogIfError(err)

codeMetaData := &vmcommon.CodeMetadata{
Upgradeable: false,
Payable: false,
Readable: true,
}

tokenID := vmOutput.ReturnData[0]
vmInputCreate := &vmcommon.ContractCreateInput{
VMInput: vmcommon.VMInput{
CallerAddr: vm.LiquidStakingSCAddress,
Arguments: [][]byte{tokenID},
CallValue: zero,
},
ContractCode: vm.DelegationManagerSCAddress,
ContractCodeMetadata: codeMetaData.ToBytes(),
}

vmOutput, err = systemVM.RunSmartContractCreate(vmInputCreate)
log.LogIfError(err)
if vmOutput.ReturnCode != vmcommon.Ok {
log.Error("error while initializing system SC", "return code", vmOutput.ReturnCode)
}

err = ProcessSCOutputAccounts(vmOutput, tpn.AccntState)
log.LogIfError(err)

err = tpn.updateSystemSCContractsCode(vmInputCreate.ContractCodeMetadata, vm.LiquidStakingSCAddress)
log.LogIfError(err)

_, err = tpn.AccntState.Commit()
log.LogIfError(err)

return tokenID
}

func (tpn *TestProcessorNode) updateSystemSCContractsCode(contractMetadata []byte, scAddress []byte) error {
userAcc, err := tpn.getUserAccount(scAddress)
if err != nil {
Expand Down