github.com/FUSIONFoundation/efsn@v3.6.2-0.20200916075423-dbb5dd5d2cc7+incompatible/common/fsnargs.go (about)

     1  package common
     2  
     3  import (
     4  	"math/big"
     5  
     6  	"github.com/FusionFoundation/efsn/common/hexutil"
     7  )
     8  
     9  type FSNBaseArgsInterface interface {
    10  	BaseArgs() *FusionBaseArgs
    11  	ToData() ([]byte, error)
    12  }
    13  
    14  func (args *FusionBaseArgs) BaseArgs() *FusionBaseArgs {
    15  	return args
    16  }
    17  
    18  // FusionBaseArgs wacom
    19  type FusionBaseArgs struct {
    20  	From     Address         `json:"from"`
    21  	Gas      *hexutil.Uint64 `json:"gas"`
    22  	GasPrice *hexutil.Big    `json:"gasPrice"`
    23  	Nonce    *hexutil.Uint64 `json:"nonce"`
    24  }
    25  
    26  // GenAssetArgs wacom
    27  type GenAssetArgs struct {
    28  	FusionBaseArgs
    29  	Name        string       `json:"name"`
    30  	Symbol      string       `json:"symbol"`
    31  	Decimals    uint8        `json:"decimals"`
    32  	Total       *hexutil.Big `json:"total"`
    33  	CanChange   bool         `json:"canChange"`
    34  	Description string       `json:"description"`
    35  }
    36  
    37  // SendAssetArgs wacom
    38  type SendAssetArgs struct {
    39  	FusionBaseArgs
    40  	AssetID Hash         `json:"asset"`
    41  	To      Address      `json:"to"`
    42  	ToUSAN  uint64       `json:"toUSAN"`
    43  	Value   *hexutil.Big `json:"value"`
    44  }
    45  
    46  // TimeLockArgs wacom
    47  type TimeLockArgs struct {
    48  	SendAssetArgs
    49  	StartTime    *hexutil.Uint64 `json:"start"`
    50  	EndTime      *hexutil.Uint64 `json:"end"`
    51  	TimeLockType TimeLockType    `json:"type"`
    52  }
    53  
    54  // BuyTicketArgs wacom
    55  type BuyTicketArgs struct {
    56  	FusionBaseArgs
    57  	Start *hexutil.Uint64 `json:"start"`
    58  	End   *hexutil.Uint64 `json:"end"`
    59  }
    60  
    61  type AssetValueChangeExArgs struct {
    62  	FusionBaseArgs
    63  	AssetID     Hash         `json:"asset"`
    64  	To          Address      `json:"to"`
    65  	Value       *hexutil.Big `json:"value"`
    66  	IsInc       bool         `json:"isInc"`
    67  	TransacData string       `json:"transacData"`
    68  }
    69  
    70  // MakeSwapArgs wacom
    71  type MakeSwapArgs struct {
    72  	FusionBaseArgs
    73  	FromAssetID   Hash
    74  	FromStartTime *hexutil.Uint64
    75  	FromEndTime   *hexutil.Uint64
    76  	MinFromAmount *hexutil.Big
    77  	ToAssetID     Hash
    78  	ToStartTime   *hexutil.Uint64
    79  	ToEndTime     *hexutil.Uint64
    80  	MinToAmount   *hexutil.Big
    81  	SwapSize      *big.Int
    82  	Targes        []Address
    83  	Time          *big.Int
    84  	Description   string
    85  }
    86  
    87  // RecallSwapArgs wacom
    88  type RecallSwapArgs struct {
    89  	FusionBaseArgs
    90  	SwapID Hash
    91  }
    92  
    93  // TakeSwapArgs wacom
    94  type TakeSwapArgs struct {
    95  	FusionBaseArgs
    96  	SwapID Hash
    97  	Size   *big.Int
    98  }
    99  
   100  // MakeMultiSwapArgs wacom
   101  type MakeMultiSwapArgs struct {
   102  	FusionBaseArgs
   103  	FromAssetID   []Hash
   104  	FromStartTime []*hexutil.Uint64
   105  	FromEndTime   []*hexutil.Uint64
   106  	MinFromAmount []*hexutil.Big
   107  	ToAssetID     []Hash
   108  	ToStartTime   []*hexutil.Uint64
   109  	ToEndTime     []*hexutil.Uint64
   110  	MinToAmount   []*hexutil.Big
   111  	SwapSize      *big.Int
   112  	Targes        []Address
   113  	Time          *big.Int
   114  	Description   string
   115  }
   116  
   117  // RecallMultiSwapArgs wacom
   118  type RecallMultiSwapArgs struct {
   119  	FusionBaseArgs
   120  	SwapID Hash
   121  }
   122  
   123  // TakeSwapArgs wacom
   124  type TakeMultiSwapArgs struct {
   125  	FusionBaseArgs
   126  	SwapID Hash
   127  	Size   *big.Int
   128  }
   129  
   130  //////////////////// args ToParam, ToData, Init ///////////////////////
   131  
   132  func (args *FusionBaseArgs) ToData() ([]byte, error) {
   133  	return nil, nil
   134  }
   135  
   136  func (args *SendAssetArgs) ToParam() *SendAssetParam {
   137  	return &SendAssetParam{
   138  		AssetID: args.AssetID,
   139  		To:      args.To,
   140  		Value:   args.Value.ToInt(),
   141  	}
   142  }
   143  
   144  func (args *SendAssetArgs) ToData() ([]byte, error) {
   145  	return args.ToParam().ToBytes()
   146  }
   147  
   148  func (args *TimeLockArgs) ToParam() *TimeLockParam {
   149  	return &TimeLockParam{
   150  		Type:      args.TimeLockType,
   151  		AssetID:   args.AssetID,
   152  		To:        args.To,
   153  		StartTime: uint64(*args.StartTime),
   154  		EndTime:   uint64(*args.EndTime),
   155  		Value:     args.Value.ToInt(),
   156  	}
   157  }
   158  
   159  func (args *TimeLockArgs) ToData() ([]byte, error) {
   160  	return args.ToParam().ToBytes()
   161  }
   162  
   163  func (args *GenAssetArgs) ToParam() *GenAssetParam {
   164  	return &GenAssetParam{
   165  		Name:        args.Name,
   166  		Symbol:      args.Symbol,
   167  		Decimals:    args.Decimals,
   168  		Total:       args.Total.ToInt(),
   169  		CanChange:   args.CanChange,
   170  		Description: args.Description,
   171  	}
   172  }
   173  
   174  func (args *GenAssetArgs) ToData() ([]byte, error) {
   175  	return args.ToParam().ToBytes()
   176  }
   177  
   178  func (args *BuyTicketArgs) ToParam() *BuyTicketParam {
   179  	return &BuyTicketParam{
   180  		Start: uint64(*args.Start),
   181  		End:   uint64(*args.End),
   182  	}
   183  }
   184  
   185  func (args *BuyTicketArgs) ToData() ([]byte, error) {
   186  	return args.ToParam().ToBytes()
   187  }
   188  
   189  func (args *BuyTicketArgs) Init(defStart uint64) {
   190  
   191  	if args.Start == nil {
   192  		args.Start = new(hexutil.Uint64)
   193  		*(*uint64)(args.Start) = defStart
   194  	}
   195  
   196  	if args.End == nil {
   197  		args.End = new(hexutil.Uint64)
   198  		*(*uint64)(args.End) = uint64(*args.Start) + 30*24*3600
   199  	}
   200  }
   201  
   202  func (args *AssetValueChangeExArgs) ToParam() *AssetValueChangeExParam {
   203  	return &AssetValueChangeExParam{
   204  		AssetID:     args.AssetID,
   205  		To:          args.To,
   206  		Value:       args.Value.ToInt(),
   207  		IsInc:       args.IsInc,
   208  		TransacData: args.TransacData,
   209  	}
   210  }
   211  
   212  func (args *AssetValueChangeExArgs) ToData() ([]byte, error) {
   213  	return args.ToParam().ToBytes()
   214  }
   215  
   216  func (args *MakeSwapArgs) Init(time *big.Int) {
   217  	args.Time = time
   218  
   219  	if args.FromStartTime == nil {
   220  		args.FromStartTime = new(hexutil.Uint64)
   221  		*(*uint64)(args.FromStartTime) = TimeLockNow
   222  	}
   223  
   224  	if args.FromEndTime == nil {
   225  		args.FromEndTime = new(hexutil.Uint64)
   226  		*(*uint64)(args.FromEndTime) = TimeLockForever
   227  	}
   228  
   229  	if args.ToStartTime == nil {
   230  		args.ToStartTime = new(hexutil.Uint64)
   231  		*(*uint64)(args.ToStartTime) = TimeLockNow
   232  	}
   233  
   234  	if args.ToEndTime == nil {
   235  		args.ToEndTime = new(hexutil.Uint64)
   236  		*(*uint64)(args.ToEndTime) = TimeLockForever
   237  	}
   238  }
   239  
   240  func (args *MakeSwapArgs) ToParam() *MakeSwapParam {
   241  	return &MakeSwapParam{
   242  		FromAssetID:   args.FromAssetID,
   243  		FromStartTime: uint64(*args.FromStartTime),
   244  		FromEndTime:   uint64(*args.FromEndTime),
   245  		MinFromAmount: args.MinFromAmount.ToInt(),
   246  		ToAssetID:     args.ToAssetID,
   247  		ToStartTime:   uint64(*args.ToStartTime),
   248  		ToEndTime:     uint64(*args.ToEndTime),
   249  		MinToAmount:   args.MinToAmount.ToInt(),
   250  		SwapSize:      args.SwapSize,
   251  		Targes:        args.Targes,
   252  		Time:          args.Time,
   253  		Description:   args.Description,
   254  	}
   255  }
   256  
   257  func (args *MakeSwapArgs) ToData() ([]byte, error) {
   258  	return args.ToParam().ToBytes()
   259  }
   260  
   261  func (args *RecallSwapArgs) ToParam() *RecallSwapParam {
   262  	return &RecallSwapParam{
   263  		SwapID: args.SwapID,
   264  	}
   265  }
   266  
   267  func (args *RecallSwapArgs) ToData() ([]byte, error) {
   268  	return args.ToParam().ToBytes()
   269  }
   270  
   271  func (args *TakeSwapArgs) ToParam() *TakeSwapParam {
   272  	return &TakeSwapParam{
   273  		SwapID: args.SwapID,
   274  		Size:   args.Size,
   275  	}
   276  }
   277  
   278  func (args *TakeSwapArgs) ToData() ([]byte, error) {
   279  	return args.ToParam().ToBytes()
   280  }
   281  
   282  func (args *MakeMultiSwapArgs) Init(time *big.Int) {
   283  	args.Time = time
   284  
   285  	ln := len(args.MinFromAmount)
   286  
   287  	l := len(args.FromStartTime)
   288  	if l < ln {
   289  		temp := make([]*hexutil.Uint64, ln)
   290  		copy(temp[:l], args.FromStartTime)
   291  		for i := l; i < ln; i++ {
   292  			temp[i] = new(hexutil.Uint64)
   293  			*(*uint64)(temp[i]) = TimeLockNow
   294  		}
   295  		args.FromStartTime = temp
   296  	}
   297  
   298  	l = len(args.FromEndTime)
   299  	if l < ln {
   300  		temp := make([]*hexutil.Uint64, ln)
   301  		copy(temp[:l], args.FromEndTime)
   302  		for i := l; i < ln; i++ {
   303  			temp[i] = new(hexutil.Uint64)
   304  			*(*uint64)(temp[i]) = TimeLockForever
   305  		}
   306  		args.FromEndTime = temp
   307  	}
   308  
   309  	ln = len(args.MinToAmount)
   310  
   311  	l = len(args.ToStartTime)
   312  	if l < ln {
   313  		temp := make([]*hexutil.Uint64, ln)
   314  		copy(temp[:l], args.ToStartTime)
   315  		for i := l; i < ln; i++ {
   316  			temp[i] = new(hexutil.Uint64)
   317  			*(*uint64)(temp[i]) = TimeLockNow
   318  		}
   319  		args.ToStartTime = temp
   320  	}
   321  
   322  	l = len(args.ToEndTime)
   323  	if l < ln {
   324  		temp := make([]*hexutil.Uint64, ln)
   325  		copy(temp[:l], args.ToEndTime)
   326  		for i := l; i < ln; i++ {
   327  			temp[i] = new(hexutil.Uint64)
   328  			*(*uint64)(temp[i]) = TimeLockForever
   329  		}
   330  		args.ToEndTime = temp
   331  	}
   332  }
   333  
   334  func (args *MakeMultiSwapArgs) ToParam() *MakeMultiSwapParam {
   335  	fromStartTime := make([]uint64, len(args.FromStartTime))
   336  	for i := 0; i < len(args.FromStartTime); i++ {
   337  		fromStartTime[i] = uint64(*args.FromStartTime[i])
   338  	}
   339  	fromEndTime := make([]uint64, len(args.FromEndTime))
   340  	for i := 0; i < len(args.FromEndTime); i++ {
   341  		fromEndTime[i] = uint64(*args.FromEndTime[i])
   342  	}
   343  	minFromAmount := make([]*big.Int, len(args.MinFromAmount))
   344  	for i := 0; i < len(args.MinFromAmount); i++ {
   345  		minFromAmount[i] = args.MinFromAmount[i].ToInt()
   346  	}
   347  	toStartTime := make([]uint64, len(args.ToStartTime))
   348  	for i := 0; i < len(args.ToStartTime); i++ {
   349  		toStartTime[i] = uint64(*args.ToStartTime[i])
   350  	}
   351  	toEndTime := make([]uint64, len(args.ToEndTime))
   352  	for i := 0; i < len(args.ToEndTime); i++ {
   353  		toEndTime[i] = uint64(*args.ToEndTime[i])
   354  	}
   355  	minToAmount := make([]*big.Int, len(args.MinToAmount))
   356  	for i := 0; i < len(args.MinToAmount); i++ {
   357  		minToAmount[i] = args.MinToAmount[i].ToInt()
   358  	}
   359  	return &MakeMultiSwapParam{
   360  		FromAssetID:   args.FromAssetID,
   361  		FromStartTime: fromStartTime,
   362  		FromEndTime:   fromEndTime,
   363  		MinFromAmount: minFromAmount,
   364  		ToAssetID:     args.ToAssetID,
   365  		ToStartTime:   toStartTime,
   366  		ToEndTime:     toEndTime,
   367  		MinToAmount:   minToAmount,
   368  		SwapSize:      args.SwapSize,
   369  		Targes:        args.Targes,
   370  		Time:          args.Time,
   371  		Description:   args.Description,
   372  	}
   373  }
   374  
   375  func (args *MakeMultiSwapArgs) ToData() ([]byte, error) {
   376  	return args.ToParam().ToBytes()
   377  }
   378  
   379  func (args *RecallMultiSwapArgs) ToParam() *RecallMultiSwapParam {
   380  	return &RecallMultiSwapParam{
   381  		SwapID: args.SwapID,
   382  	}
   383  }
   384  
   385  func (args *RecallMultiSwapArgs) ToData() ([]byte, error) {
   386  	return args.ToParam().ToBytes()
   387  }
   388  
   389  func (args *TakeMultiSwapArgs) ToParam() *TakeMultiSwapParam {
   390  	return &TakeMultiSwapParam{
   391  		SwapID: args.SwapID,
   392  		Size:   args.Size,
   393  	}
   394  }
   395  
   396  func (args *TakeMultiSwapArgs) ToData() ([]byte, error) {
   397  	return args.ToParam().ToBytes()
   398  }
   399  
   400  func (args *TimeLockArgs) Init(timeLockType TimeLockType) {
   401  	args.TimeLockType = timeLockType
   402  
   403  	if args.StartTime == nil {
   404  		args.StartTime = new(hexutil.Uint64)
   405  		*(*uint64)(args.StartTime) = TimeLockNow
   406  	}
   407  
   408  	if args.EndTime == nil {
   409  		args.EndTime = new(hexutil.Uint64)
   410  		*(*uint64)(args.EndTime) = TimeLockForever
   411  	}
   412  }