diff --git a/.gitignore b/.gitignore index 0ff977e4..92068074 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ backend .idea .vscode mem.log + +__debug_* \ No newline at end of file diff --git a/routes/base.go b/routes/base.go index ce0359a0..bfdc91ce 100644 --- a/routes/base.go +++ b/routes/base.go @@ -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 diff --git a/routes/nft.go b/routes/nft.go index c6affae5..65fbe757 100644 --- a/routes/nft.go +++ b/routes/nft.go @@ -124,15 +124,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) { @@ -238,7 +238,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 { @@ -342,10 +342,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 { @@ -492,10 +492,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 { @@ -654,10 +654,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 { @@ -1573,10 +1573,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 } @@ -1730,10 +1730,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 } @@ -1869,10 +1869,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 } diff --git a/routes/shared.go b/routes/shared.go index d5a67200..0a38d046 100644 --- a/routes/shared.go +++ b/routes/shared.go @@ -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 { diff --git a/routes/transaction.go b/routes/transaction.go index 14daf9fb..301c4339 100644 --- a/routes/transaction.go +++ b/routes/transaction.go @@ -478,7 +478,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 } @@ -496,7 +496,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 diff --git a/routes/user.go b/routes/user.go index 2484e844..b837375e 100644 --- a/routes/user.go +++ b/routes/user.go @@ -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( diff --git a/routes/verify.go b/routes/verify.go index 9c9910eb..8ac0fe7e 100644 --- a/routes/verify.go +++ b/routes/verify.go @@ -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 }