6 "github.com/bytom/vapor/protocol/bc/types"
7 "github.com/bytom/vapor/protocol/vm"
11 sizeOfCancelClauseArgs = 3
12 sizeOfPartialTradeClauseArgs = 3
13 sizeOfFullTradeClauseArgs = 2
16 // smart contract clause select for differnet unlock method
18 PartialTradeClauseSelector int64 = iota
19 FullTradeClauseSelector
23 // IsCancelClauseSelector check if input select cancel clause
24 func IsCancelClauseSelector(input *types.TxInput) bool {
25 return len(input.Arguments()) == sizeOfCancelClauseArgs && hex.EncodeToString(input.Arguments()[len(input.Arguments())-1]) == hex.EncodeToString(vm.Int64Bytes(CancelClauseSelector))
28 // IsTradeClauseSelector check if input select is partial trade clause or full trade clause
29 func IsTradeClauseSelector(input *types.TxInput) bool {
30 return IsPartialTradeClauseSelector(input) || IsFullTradeClauseSelector(input)
33 // IsPartialTradeClauseSelector check if input select partial trade clause
34 func IsPartialTradeClauseSelector(input *types.TxInput) bool {
35 return len(input.Arguments()) == sizeOfPartialTradeClauseArgs && hex.EncodeToString(input.Arguments()[len(input.Arguments())-1]) == hex.EncodeToString(vm.Int64Bytes(PartialTradeClauseSelector))
38 // IsFullTradeClauseSelector check if input select full trade clause
39 func IsFullTradeClauseSelector(input *types.TxInput) bool {
40 return len(input.Arguments()) == sizeOfFullTradeClauseArgs && hex.EncodeToString(input.Arguments()[len(input.Arguments())-1]) == hex.EncodeToString(vm.Int64Bytes(FullTradeClauseSelector))