diff --git a/lib/block_view_lockups.go b/lib/block_view_lockups.go index c2c3e34ea..da07caaa0 100644 --- a/lib/block_view_lockups.go +++ b/lib/block_view_lockups.go @@ -1593,6 +1593,9 @@ func (bav *UtxoView) _connectCoinLockup( PrevLockedBalanceEntries: previousLockedBalanceEntries, SetLockedBalanceEntries: setLockedBalanceEntries, PrevCoinEntry: prevCoinEntry, + StateChangeMetadata: &CoinLockupStateChangeMetadata{ + YieldAmountBaseUnits: yieldFromTxn, + }, }) // Construct UtxoOps in the event this transaction is reverted. diff --git a/lib/state_change_metadata.go b/lib/state_change_metadata.go index db8eaed42..8fd0461d3 100644 --- a/lib/state_change_metadata.go +++ b/lib/state_change_metadata.go @@ -3,6 +3,7 @@ package lib import ( "bytes" "github.com/deso-protocol/core/collections" + "github.com/deso-protocol/uint256" "github.com/pkg/errors" ) @@ -25,6 +26,7 @@ const ( EncoderTypeStakeRewardStateChangeMetadata EncoderType = 2000015 EncoderTypeUnjailValidatorStateChangeMetadata EncoderType = 2000016 EncoderTypeUnregisterAsValidatorStateChangeMetadata EncoderType = 2000017 + EncoderTypeCoinLockupStateChangeMetadata EncoderType = 2000018 ) func GetStateChangeMetadataFromOpType(opType OperationType) DeSoEncoder { @@ -692,3 +694,30 @@ func (metadata *UnregisterAsValidatorStateChangeMetadata) GetVersionByte(blockHe func (metadata *UnregisterAsValidatorStateChangeMetadata) GetEncoderType() EncoderType { return EncoderTypeUnregisterAsValidatorStateChangeMetadata } + +type CoinLockupStateChangeMetadata struct { + YieldAmountBaseUnits *uint256.Int +} + +func (metadata *CoinLockupStateChangeMetadata) RawEncodeWithoutMetadata(blockHeight uint64, skipMetadata ...bool) []byte { + var data []byte + data = append(data, VariableEncodeUint256(metadata.YieldAmountBaseUnits)...) + return data +} + +func (metadata *CoinLockupStateChangeMetadata) RawDecodeWithoutMetadata(blockHeight uint64, rr *bytes.Reader) error { + var err error + metadata.YieldAmountBaseUnits, err = VariableDecodeUint256(rr) + if err != nil { + return errors.Wrapf(err, "CoinLockupStateChangeMetadata.Decode: Problem reading YieldAmountBaseUnits") + } + return nil +} + +func (metadata *CoinLockupStateChangeMetadata) GetVersionByte(blockHeight uint64) byte { + return 0 +} + +func (metadata *CoinLockupStateChangeMetadata) GetEncoderType() EncoderType { + return EncoderTypeCoinLockupStateChangeMetadata +}