github.com/MetalBlockchain/metalgo@v1.11.9/snow/consensus/snowball/factory.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package snowball 5 6 import "github.com/MetalBlockchain/metalgo/ids" 7 8 var ( 9 SnowballFactory Factory = snowballFactory{} 10 SnowflakeFactory Factory = snowflakeFactory{} 11 ) 12 13 type snowballFactory struct{} 14 15 func (snowballFactory) NewNnary(params Parameters, choice ids.ID) Nnary { 16 sb := newNnarySnowball(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta), choice) 17 return &sb 18 } 19 20 func (snowballFactory) NewUnary(params Parameters) Unary { 21 sb := newUnarySnowball(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta)) 22 return &sb 23 } 24 25 type snowflakeFactory struct{} 26 27 func (snowflakeFactory) NewNnary(params Parameters, choice ids.ID) Nnary { 28 sf := newNnarySnowflake(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta), choice) 29 return &sf 30 } 31 32 func (snowflakeFactory) NewUnary(params Parameters) Unary { 33 sf := newUnarySnowflake(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta)) 34 return &sf 35 }