Documentation ¶
Overview ¶
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>
ZooBC is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
ZooBC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ZooBC. If not, see <http://www.gnu.org/licenses/>.
Additional Permission Under GNU GPL Version 3 section 7. As the special exception permitted under Section 7b, c and e, in respect with the Author’s copyright, please refer to this section:
- You are free to convey this Program according to GNU GPL Version 3, as long as you respect and comply with the Author’s copyright by showing in its user interface an Appropriate Notice that the derivate program and its source code are “powered by ZooBC”. This is an acknowledgement for the copyright holder, ZooBC, as the implementation of appreciation of the exclusive right of the creator and to avoid any circumvention on the rights under trademark law for use of some trade names, trademarks, or service marks.
- Complying to the GNU GPL Version 3, you may distribute the program without any permission from the Author. However a prior notification to the authors will be appreciated.
ZooBC is architected by Roberto Capodieci & Barton Johnston
contact us at roberto.capodieci[at]blockchainzoo.com and barton.johnston[at]blockchainzoo.com
Core developers that contributed to the current implementation of the software are:
Ahmad Ali Abdilah ahmad.abdilah[at]blockchainzoo.com Allan Bintoro allan.bintoro[at]blockchainzoo.com Andy Herman Gede Sukra Ketut Ariasa Nawi Kartini nawi.kartini[at]blockchainzoo.com Stefano Galassi stefano.galassi[at]blockchainzoo.com
IMPORTANT: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>
ZooBC is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
ZooBC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ZooBC. If not, see <http://www.gnu.org/licenses/>.
Additional Permission Under GNU GPL Version 3 section 7. As the special exception permitted under Section 7b, c and e, in respect with the Author’s copyright, please refer to this section:
- You are free to convey this Program according to GNU GPL Version 3, as long as you respect and comply with the Author’s copyright by showing in its user interface an Appropriate Notice that the derivate program and its source code are “powered by ZooBC”. This is an acknowledgement for the copyright holder, ZooBC, as the implementation of appreciation of the exclusive right of the creator and to avoid any circumvention on the rights under trademark law for use of some trade names, trademarks, or service marks.
- Complying to the GNU GPL Version 3, you may distribute the program without any permission from the Author. However a prior notification to the authors will be appreciated.
ZooBC is architected by Roberto Capodieci & Barton Johnston
contact us at roberto.capodieci[at]blockchainzoo.com and barton.johnston[at]blockchainzoo.com
Core developers that contributed to the current implementation of the software are:
Ahmad Ali Abdilah ahmad.abdilah[at]blockchainzoo.com Allan Bintoro allan.bintoro[at]blockchainzoo.com Andy Herman Gede Sukra Ketut Ariasa Nawi Kartini nawi.kartini[at]blockchainzoo.com Stefano Galassi stefano.galassi[at]blockchainzoo.com
IMPORTANT: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>
ZooBC is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
ZooBC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ZooBC. If not, see <http://www.gnu.org/licenses/>.
Additional Permission Under GNU GPL Version 3 section 7. As the special exception permitted under Section 7b, c and e, in respect with the Author’s copyright, please refer to this section:
- You are free to convey this Program according to GNU GPL Version 3, as long as you respect and comply with the Author’s copyright by showing in its user interface an Appropriate Notice that the derivate program and its source code are “powered by ZooBC”. This is an acknowledgement for the copyright holder, ZooBC, as the implementation of appreciation of the exclusive right of the creator and to avoid any circumvention on the rights under trademark law for use of some trade names, trademarks, or service marks.
- Complying to the GNU GPL Version 3, you may distribute the program without any permission from the Author. However a prior notification to the authors will be appreciated.
ZooBC is architected by Roberto Capodieci & Barton Johnston
contact us at roberto.capodieci[at]blockchainzoo.com and barton.johnston[at]blockchainzoo.com
Core developers that contributed to the current implementation of the software are:
Ahmad Ali Abdilah ahmad.abdilah[at]blockchainzoo.com Allan Bintoro allan.bintoro[at]blockchainzoo.com Andy Herman Gede Sukra Ketut Ariasa Nawi Kartini nawi.kartini[at]blockchainzoo.com Stefano Galassi stefano.galassi[at]blockchainzoo.com
IMPORTANT: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>
ZooBC is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
ZooBC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ZooBC. If not, see <http://www.gnu.org/licenses/>.
Additional Permission Under GNU GPL Version 3 section 7. As the special exception permitted under Section 7b, c and e, in respect with the Author’s copyright, please refer to this section:
- You are free to convey this Program according to GNU GPL Version 3, as long as you respect and comply with the Author’s copyright by showing in its user interface an Appropriate Notice that the derivate program and its source code are “powered by ZooBC”. This is an acknowledgement for the copyright holder, ZooBC, as the implementation of appreciation of the exclusive right of the creator and to avoid any circumvention on the rights under trademark law for use of some trade names, trademarks, or service marks.
- Complying to the GNU GPL Version 3, you may distribute the program without any permission from the Author. However a prior notification to the authors will be appreciated.
ZooBC is architected by Roberto Capodieci & Barton Johnston
contact us at roberto.capodieci[at]blockchainzoo.com and barton.johnston[at]blockchainzoo.com
Core developers that contributed to the current implementation of the software are:
Ahmad Ali Abdilah ahmad.abdilah[at]blockchainzoo.com Allan Bintoro allan.bintoro[at]blockchainzoo.com Andy Herman Gede Sukra Ketut Ariasa Nawi Kartini nawi.kartini[at]blockchainzoo.com Stefano Galassi stefano.galassi[at]blockchainzoo.com
IMPORTANT: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>
ZooBC is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
ZooBC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ZooBC. If not, see <http://www.gnu.org/licenses/>.
Additional Permission Under GNU GPL Version 3 section 7. As the special exception permitted under Section 7b, c and e, in respect with the Author’s copyright, please refer to this section:
- You are free to convey this Program according to GNU GPL Version 3, as long as you respect and comply with the Author’s copyright by showing in its user interface an Appropriate Notice that the derivate program and its source code are “powered by ZooBC”. This is an acknowledgement for the copyright holder, ZooBC, as the implementation of appreciation of the exclusive right of the creator and to avoid any circumvention on the rights under trademark law for use of some trade names, trademarks, or service marks.
- Complying to the GNU GPL Version 3, you may distribute the program without any permission from the Author. However a prior notification to the authors will be appreciated.
ZooBC is architected by Roberto Capodieci & Barton Johnston
contact us at roberto.capodieci[at]blockchainzoo.com and barton.johnston[at]blockchainzoo.com
Core developers that contributed to the current implementation of the software are:
Ahmad Ali Abdilah ahmad.abdilah[at]blockchainzoo.com Allan Bintoro allan.bintoro[at]blockchainzoo.com Andy Herman Gede Sukra Ketut Ariasa Nawi Kartini nawi.kartini[at]blockchainzoo.com Stefano Galassi stefano.galassi[at]blockchainzoo.com
IMPORTANT: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Index ¶
- Constants
- func CalculateTxMinimumFee(tx *model.Transaction, feeScale int64) (int64, error)
- type BlockLifeTimeFeeModel
- type ConstantFeeModel
- type FeeModelInterface
- type FeeScaleService
- func (fss *FeeScaleService) GetCurrentPhase(blockTimestamp int64, isPostTransaction bool) (phase model.FeeVotePhase, canAdjust bool, err error)
- func (fss *FeeScaleService) GetLatestFeeScale(feeScale *model.FeeScale) error
- func (fss *FeeScaleService) InsertFeeScale(feeScale *model.FeeScale) error
- func (fss *FeeScaleService) SelectVote(votes []*model.FeeVoteInfo, originalSendZBCFee int64) int64
- type FeeScaleServiceInterface
Constants ¶
const ( // SendZBCFeeConstant value of initial / constant send zbc fee SendZBCFeeConstant = constant.OneZBC / 100 InitialFeeScale = constant.OneZBC / 100 FeeScaleLowerConstraints = 0.5 FeeScaleUpperConstraints = 2.0 FeePerCharacterMultiplier = float64(0.1) // so with initial fee, 1000 char would require 1ZBC EscrowLifetimeDivider = 24 // 24 hours )
Variables ¶
This section is empty.
Functions ¶
func CalculateTxMinimumFee ¶
func CalculateTxMinimumFee(tx *model.Transaction, feeScale int64) (int64, error)
CalculateTxMinimumFee calculate the minimum fee for the given transaction
Types ¶
type BlockLifeTimeFeeModel ¶
type BlockLifeTimeFeeModel struct {
// contains filtered or unexported fields
}
BlockLifeTimeFeeModel will calculate the transaction fee based on expected lifetime on the chain. `timeout` field must be present in the transaction body
func NewBlockLifeTimeFeeModel ¶
func NewBlockLifeTimeFeeModel( blockPeriod, feePerBlockPeriod int64, ) *BlockLifeTimeFeeModel
func (*BlockLifeTimeFeeModel) CalculateTxMinimumFee ¶
func (blt *BlockLifeTimeFeeModel) CalculateTxMinimumFee( txBody model.TransactionBodyInterface, tx *model.Transaction, ) (int64, error)
type ConstantFeeModel ¶
type ConstantFeeModel struct {
// contains filtered or unexported fields
}
ConstantFeeModel is fee that'll be set as a constant number
func NewConstantFeeModel ¶
func NewConstantFeeModel(constantFee int64) *ConstantFeeModel
func (*ConstantFeeModel) CalculateTxMinimumFee ¶
func (cfm *ConstantFeeModel) CalculateTxMinimumFee( model.TransactionBodyInterface, *model.Transaction, ) (int64, error)
type FeeModelInterface ¶
type FeeModelInterface interface {
CalculateTxMinimumFee(txBody model.TransactionBodyInterface, tx *model.Transaction) (int64, error)
}
type FeeScaleService ¶
type FeeScaleService struct { FeeScaleQuery query.FeeScaleQueryInterface MainBlockStateStorage storage.CacheStorageInterface Executor query.ExecutorInterface // contains filtered or unexported fields }
func NewFeeScaleService ¶
func NewFeeScaleService( feeScaleQuery query.FeeScaleQueryInterface, mainBlockStateStorage storage.CacheStorageInterface, executor query.ExecutorInterface, ) *FeeScaleService
func (*FeeScaleService) GetCurrentPhase ¶
func (fss *FeeScaleService) GetCurrentPhase( blockTimestamp int64, isPostTransaction bool, ) (phase model.FeeVotePhase, canAdjust bool, err error)
GetCurrentPhase require 2 parameters the blockTimestamp (when pushBlock) or currentTimestamp (when postTransaction) and isPostTransaction parameter when set true will not update the cache, and blockTimestamp need to be filled with node's current timestamp instead todo: @andy-shi88 discard `isPostTransaction` parameter as there is no way to flag that in validate function with current state of the code
func (*FeeScaleService) GetLatestFeeScale ¶
func (fss *FeeScaleService) GetLatestFeeScale(feeScale *model.FeeScale) error
GetLatestFeeScale return the latest agreed fee-scale value and cached
func (*FeeScaleService) InsertFeeScale ¶
func (fss *FeeScaleService) InsertFeeScale(feeScale *model.FeeScale) error
InsertFeeScale insert newly agreed feeScale value must be called in database transaction
func (*FeeScaleService) SelectVote ¶
func (fss *FeeScaleService) SelectVote(votes []*model.FeeVoteInfo, originalSendZBCFee int64) int64
SelectVote return the scaled vote relative to original / unscaled send-zbc fee
type FeeScaleServiceInterface ¶
type FeeScaleServiceInterface interface { InsertFeeScale(feeScale *model.FeeScale) error GetLatestFeeScale(feeScale *model.FeeScale) error GetCurrentPhase( blockTimestamp int64, isPostTransaction bool, ) (phase model.FeeVotePhase, canAdjust bool, err error) SelectVote(votes []*model.FeeVoteInfo, originalSendZBCFee int64) int64 }