Skip to content

Commit

Permalink
Merge branch 'jp/atomic_txns' into jp/preceding_atomic_txns
Browse files Browse the repository at this point in the history
  • Loading branch information
lazynina authored Apr 8, 2024
2 parents 45c0310 + 449ef5f commit 1b2cadd
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 25 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ backend
.idea
.vscode
mem.log

__debug_*
2 changes: 1 addition & 1 deletion routes/admin_transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func TestUpdateGlobalParams(t *testing.T) {
require.Equal(t, globalParams.StakeLockupEpochDuration, uint64(3))
require.Equal(t, globalParams.ValidatorJailEpochDuration, uint64(3))
require.Equal(t, globalParams.LeaderScheduleMaxNumValidators, uint64(100))
require.Equal(t, globalParams.EpochDurationNumBlocks, uint64(10))
require.Equal(t, globalParams.EpochDurationNumBlocks, uint64(144))
require.Equal(t, globalParams.JailInactiveValidatorGracePeriodEpochs, uint64(3))
}
{
Expand Down
2 changes: 1 addition & 1 deletion routes/atomic_txns.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (fes *APIServer) CreateAtomicTxnsWrapper(ww http.ResponseWriter, req *http.
// Validate that:
// (1) The resulting transaction is not over the size limit of an atomic transaction.
// (2) The resulting wrapper transactions have sufficient fees to cover the wrapper.
if txnSizeBytes > utxoView.GlobalParamsEntry.MaxTxnSizeBytesPoS {
if txnSizeBytes > utxoView.GetCurrentGlobalParamsEntry().MaxTxnSizeBytesPoS {
_AddBadRequestError(ww, fmt.Sprint("CreateAtomicTxnsWrapper: Resulting wrapper transaction too large"))
return
}
Expand Down
2 changes: 1 addition & 1 deletion routes/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ func (fes *APIServer) GetAppState(ww http.ResponseWriter, req *http.Request) {
}

// Compute a default fee rate.
globalParams := utxoView.GlobalParamsEntry
globalParams := utxoView.GetCurrentGlobalParamsEntry()
defaultFeeRateNanosPerKB := fes.MinFeeRateNanosPerKB
if globalParams != nil && globalParams.MinimumNetworkFeeNanosPerKB > 0 {
defaultFeeRateNanosPerKB = globalParams.MinimumNetworkFeeNanosPerKB
Expand Down
32 changes: 16 additions & 16 deletions routes/nft.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,15 @@ func (fes *APIServer) CreateNFT(ww http.ResponseWriter, req *http.Request) {
} else if requestData.UpdaterPublicKeyBase58Check == "" {
_AddBadRequestError(ww, fmt.Sprintf("CreateNFT: Must include UpdaterPublicKeyBase58Check"))
return
} else if utxoView.GlobalParamsEntry.MaxCopiesPerNFT == 0 {
} else if utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT == 0 {
_AddBadRequestError(ww,
"NFT minting has not been enabled yet. Check back soon :)")
return

} else if requestData.NumCopies <= 0 || requestData.NumCopies > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.NumCopies <= 0 || requestData.NumCopies > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"CreateNFT: NumCopies must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.NumCopies))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.NumCopies))
return

} else if requestData.NFTRoyaltyToCreatorBasisPoints < 0 || requestData.NFTRoyaltyToCreatorBasisPoints > int(fes.Params.MaxNFTRoyaltyBasisPoints) {
Expand Down Expand Up @@ -243,7 +243,7 @@ func (fes *APIServer) CreateNFT(ww http.ResponseWriter, req *http.Request) {
return
}

nftFee := utxoView.GlobalParamsEntry.CreateNFTFeeNanos * uint64(requestData.NumCopies)
nftFee := utxoView.GetCurrentGlobalParamsEntry().CreateNFTFeeNanos * uint64(requestData.NumCopies)

extraData, err := EncodeExtraDataMap(requestData.ExtraData)
if err != nil {
Expand Down Expand Up @@ -352,10 +352,10 @@ func (fes *APIServer) UpdateNFT(ww http.ResponseWriter, req *http.Request) {
_AddBadRequestError(ww, fmt.Sprintf("UpdateNFT: Must include UpdaterPublicKeyBase58Check"))
return

} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"UpdateNFT: SerialNumbers must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.SerialNumber))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.SerialNumber))
return

} else if requestData.MinBidAmountNanos < 0 {
Expand Down Expand Up @@ -507,10 +507,10 @@ func (fes *APIServer) CreateNFTBid(ww http.ResponseWriter, req *http.Request) {
_AddBadRequestError(ww, fmt.Sprintf("CreateNFTBid: Must include UpdaterPublicKeyBase58Check"))
return

} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"CreateNFTBid: SerialNumbers must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.SerialNumber))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.SerialNumber))
return

} else if requestData.BidAmountNanos < 0 {
Expand Down Expand Up @@ -674,10 +674,10 @@ func (fes *APIServer) AcceptNFTBid(ww http.ResponseWriter, req *http.Request) {
"AcceptNFTBid: Must include UpdaterPublicKeyBase58Check and BidderPublicKeyBase58Check"))
return

} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"AcceptNFTBid: SerialNumbers must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.SerialNumber))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.SerialNumber))
return

} else if requestData.BidAmountNanos < 0 {
Expand Down Expand Up @@ -1598,10 +1598,10 @@ func (fes *APIServer) TransferNFT(ww http.ResponseWriter, req *http.Request) {
_AddBadRequestError(ww, fmt.Sprintf("TransferNFT: Must include UpdaterPublicKeyBase58Check"))
return

} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"TransferNFT: SerialNumbers must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.SerialNumber))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.SerialNumber))
return

}
Expand Down Expand Up @@ -1760,10 +1760,10 @@ func (fes *APIServer) AcceptNFTTransfer(ww http.ResponseWriter, req *http.Reques
_AddBadRequestError(ww, fmt.Sprintf("AcceptNFTTransfer: Must include UpdaterPublicKeyBase58Check"))
return

} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"AcceptNFTTransfer: SerialNumbers must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.SerialNumber))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.SerialNumber))
return

}
Expand Down Expand Up @@ -1904,10 +1904,10 @@ func (fes *APIServer) BurnNFT(ww http.ResponseWriter, req *http.Request) {
_AddBadRequestError(ww, fmt.Sprintf("BurnNFT: Must include UpdaterPublicKeyBase58Check"))
return

} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GlobalParamsEntry.MaxCopiesPerNFT) {
} else if requestData.SerialNumber <= 0 || requestData.SerialNumber > int(utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT) {
_AddBadRequestError(ww, fmt.Sprintf(
"BurnNFT: SerialNumbers must be between %d and %d, received: %d",
1, utxoView.GlobalParamsEntry.MaxCopiesPerNFT, requestData.SerialNumber))
1, utxoView.GetCurrentGlobalParamsEntry().MaxCopiesPerNFT, requestData.SerialNumber))
return

}
Expand Down
5 changes: 3 additions & 2 deletions routes/shared.go
Original file line number Diff line number Diff line change
Expand Up @@ -394,8 +394,9 @@ func (fes *APIServer) SendSeedDeSo(recipientPkBytes []byte, amountNanos uint64,
}

minFee := fes.MinFeeRateNanosPerKB
if utxoView.GlobalParamsEntry != nil && utxoView.GlobalParamsEntry.MinimumNetworkFeeNanosPerKB > 0 {
minFee = utxoView.GlobalParamsEntry.MinimumNetworkFeeNanosPerKB
if utxoView.GetCurrentGlobalParamsEntry() != nil &&
utxoView.GetCurrentGlobalParamsEntry().MinimumNetworkFeeNanosPerKB > 0 {
minFee = utxoView.GetCurrentGlobalParamsEntry().MinimumNetworkFeeNanosPerKB
}
_, _, _, _, err = fes.blockchain.AddInputsAndChangeToTransaction(txn, minFee, fes.backendServer.GetMempool())
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions routes/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ func (fes *APIServer) CompProfileCreation(profilePublicKey []byte, userMetadata
return 0, nil, nil
}
// Additional fee is set to the create profile fee when we are creating a profile
additionalFees := utxoView.GlobalParamsEntry.CreateProfileFeeNanos
additionalFees := utxoView.GetCurrentGlobalParamsEntry().CreateProfileFeeNanos
if additionalFees == 0 {
return 0, nil, nil
}
Expand All @@ -500,7 +500,7 @@ func (fes *APIServer) CompProfileCreation(profilePublicKey []byte, userMetadata
if err != nil {
return 0, nil, errors.Wrap(fmt.Errorf("UpdateProfile: error getting current balance: %v", err), "")
}
createProfileFeeNanos := utxoView.GlobalParamsEntry.CreateProfileFeeNanos
createProfileFeeNanos := utxoView.GetCurrentGlobalParamsEntry().CreateProfileFeeNanos

// If a user is jumio verified, we just comp the profile even if their balance is greater than the create profile fee.
// If a user has a phone number verified but is not jumio verified, we need to check that they haven't spent all their
Expand Down
2 changes: 1 addition & 1 deletion routes/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func (fes *APIServer) updateUsersStateless(userList []*User, skipForLeaderboard
if err != nil {
return nil, fmt.Errorf("updateUserFields: Error calling GetAugmentedUtxoViewForPublicKey: %v", err)
}
globalParams := utxoView.GlobalParamsEntry
globalParams := utxoView.GetCurrentGlobalParamsEntry()
for _, user := range userList {
// If we get an error updating the user, log it but don't stop the show.
if err = fes.updateUserFieldsStateless(
Expand Down
4 changes: 3 additions & 1 deletion routes/verify.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,9 @@ func (fes *APIServer) canUserCreateProfile(userMetadata *UserMetadata, utxoView
// User can create a profile if they have a phone number or if they have enough DeSo to cover the create profile fee.
// User can also create a profile if they've successfully filled out a captcha.
// The PhoneNumber is only set if the user has passed phone number verification.
if userMetadata.PhoneNumber != "" || totalBalanceNanos >= utxoView.GlobalParamsEntry.CreateProfileFeeNanos || userMetadata.LastHcaptchaBlockHeight > 0 {
if userMetadata.PhoneNumber != "" ||
totalBalanceNanos >= utxoView.GetCurrentGlobalParamsEntry().CreateProfileFeeNanos ||
userMetadata.LastHcaptchaBlockHeight > 0 {
return true, nil
}

Expand Down

0 comments on commit 1b2cadd

Please sign in to comment.