github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/mock/across_mock.go (about)

     1  package mock
     2  
     3  import (
     4  	"math/big"
     5  	"time"
     6  
     7  	"github.com/sixexorg/magnetic-ring/common"
     8  	"github.com/sixexorg/magnetic-ring/common/sink"
     9  	maintypes "github.com/sixexorg/magnetic-ring/core/mainchain/types"
    10  	orgtypes "github.com/sixexorg/magnetic-ring/core/orgchain/types"
    11  	"github.com/sixexorg/magnetic-ring/log"
    12  )
    13  
    14  func init() {
    15  	InitTransactions()
    16  	InitBlocks()
    17  	InitLeagueDataAndConfirmTx()
    18  	log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StderrHandler))
    19  }
    20  
    21  var (
    22  	OrgTimeSpan    = uint64(time.Date(2018, 12, 13, 0, 0, 0, 0, time.Local).UnixNano())
    23  	CreateLeagueTx *maintypes.Transaction
    24  	Address_1, _   = common.ToAddress("ct1qK96vAkK6E8S7JgYUY3YY28Qhj6cmfda")
    25  	Address_2, _   = common.ToAddress("ct1qK96vAkK6E8S7JgYUY3YY28Qhj6cmfdb")
    26  	Address_3, _   = common.ToAddress("ct1qK96vAkK6E8S7JgYUY3YY28Qhj6cmfdc")
    27  	Address_4, _   = common.ToAddress("ct1qK96vAkK6E8S7JgYUY3YY28Qhj6cmfdd")
    28  	Address_5, _   = common.ToAddress("ct1qK96vAkK6E8S7JgYUY3YY28Qhj6cmfde")
    29  	/*txHash_1, _    = common.StringToHash("53m4x7z349sjd857zwpfu2d8e1v6rgh6jk1yg9t7fq7vxds6rnx1====")
    30  	txHash_2, _    = common.StringToHash("pevhqgd4827rg441y4g5bwxx32zexr5v5ryup5duzcpgs76pg5u1====")
    31  	txHash_3, _    = common.StringToHash("u2kehc55estec4kt9dvzafnrnqwdc16pvxj893dw8fprfd3ty1vh====")
    32  	txHash_4, _    = common.StringToHash("av362nhkksdpbd8w9dw9g24c92tqxuxu8nzy3umed8xy3ste7awh====")
    33  	txHash_5, _    = common.StringToHash("9umzce1r3qxedj2qvs1ewtj4j1fjedwt6rems8rnvmbqqw78p821====")*/
    34  
    35  	//for createLeagueTx create
    36  	LeagueAddress1, _ = common.ToAddress("ct2hA77vSd7JFUU71ZVtjcx3ttnh5d654qH")
    37  
    38  	//mainchain txs,mock mainchain tx
    39  	TxList                  map[common.Hash]*maintypes.Transaction
    40  	Tx1, Tx2, Tx3, Tx4, Tx5 *maintypes.Transaction
    41  
    42  	OrgTx1            *orgtypes.Transaction
    43  	CreateLeagueTxMap map[common.Address]*maintypes.Transaction
    44  
    45  	Block1 *orgtypes.Block
    46  	Block2 *orgtypes.Block
    47  	Block3 *orgtypes.Block
    48  	Block4 *orgtypes.Block
    49  	Block5 *orgtypes.Block
    50  	Block6 *orgtypes.Block
    51  	Block7 *orgtypes.Block
    52  
    53  	Blocks []*orgtypes.Block
    54  
    55  	NodeId, _ = common.ToAddress("ct3qK96vAkK6E8S7JgYUY3YY28Qhj6cmfda")
    56  	///////for league
    57  	//LeagueData1 *league_data.LeagueData
    58  	ConfirmTx *maintypes.Transaction
    59  )
    60  
    61  func InitLeagueDataAndConfirmTx() {
    62  	hashes := make(common.HashArray, 0, 2)
    63  	hashes = append(hashes, Block1.Hash(), Block2.Hash())
    64  	headers := make([]*orgtypes.Header, 0, 2)
    65  	txMap := make(map[uint64]common.HashArray)
    66  	for k, v := range Blocks[:2] {
    67  		headers = append(headers, Blocks[k].Header)
    68  		txMap[v.Header.Height] = make(common.HashArray, 0, v.Transactions.Len())
    69  		for _, vi := range v.Transactions {
    70  			txMap[v.Header.Height] = append(txMap[v.Header.Height], vi.Hash())
    71  		}
    72  
    73  	}
    74  	//LeagueData1 = league_data.NewLeagueData(0, 1, hashes.GetHashRoot(), headers, txMap)
    75  
    76  	ConfirmTx = &maintypes.Transaction{
    77  		Version: 0x01,
    78  		TxType:  maintypes.ConsensusLeague,
    79  		TxData: &maintypes.TxData{
    80  			StartHeight: 1,
    81  			EndHeight:   2,
    82  			BlockRoot:   hashes.GetHashRoot(),
    83  			LeagueId:    LeagueAddress1,
    84  			Fee:         big.NewInt(10),
    85  		},
    86  	}
    87  }
    88  func InitBlocks() {
    89  	var (
    90  		otxs                         orgtypes.Transactions
    91  		otx1, otx2, otx3, otx4, otx5 *orgtypes.Transaction
    92  	)
    93  
    94  	Block1 = &orgtypes.Block{
    95  		Header: &orgtypes.Header{
    96  			Version:       0x01,
    97  			PrevBlockHash: common.Hash{},
    98  			LeagueId:      LeagueAddress1,
    99  			TxRoot:        common.Hash{},
   100  			StateRoot:     common.Hash{},
   101  			ReceiptsRoot:  common.Hash{},
   102  			Difficulty:    big.NewInt(10),
   103  			Height:        1,
   104  			Timestamp:     OrgTimeSpan,
   105  		},
   106  		Transactions: nil,
   107  	}
   108  
   109  	otx1 = &orgtypes.Transaction{
   110  		Version: 0x01,
   111  		TxType:  orgtypes.EnergyFromMain,
   112  		TxData: &orgtypes.TxData{
   113  			TxHash: Tx1.Hash(),
   114  			From:   Tx1.TxData.From,
   115  			Energy:   Tx1.TxData.Energy,
   116  		},
   117  	}
   118  	OrgTx1 = otx1
   119  	common.DeepCopy(&otx2, otx1)
   120  	otx2.TxType = orgtypes.Join
   121  	otx2.TxData.TxHash = Tx2.Hash()
   122  	otx2.TxData.From = Tx2.TxData.From
   123  
   124  	common.DeepCopy(&otx3, otx1)
   125  	otx3.TxType = orgtypes.Join
   126  	otx3.TxData.TxHash = Tx3.Hash()
   127  	otx3.TxData.From = Tx3.TxData.From
   128  
   129  	common.DeepCopy(&otx4, otx1)
   130  	otx4.TxType = orgtypes.EnergyFromMain
   131  	otx4.TxData.TxHash = Tx4.Hash()
   132  	otx4.TxData.From = Tx4.TxData.From
   133  	otx4.TxData.Energy = Tx4.TxData.Energy
   134  
   135  	common.DeepCopy(&otx5, otx1)
   136  	otx5.TxType = orgtypes.EnergyFromMain
   137  	otx5.TxData.TxHash = Tx5.Hash()
   138  	otx5.TxData.From = Tx5.TxData.From
   139  	otx5.TxData.Energy = Tx5.TxData.Energy
   140  
   141  	otxs = append(otxs, otx1, otx2, otx3, otx4, otx5)
   142  	//receiptRoot :=
   143  	//stateRoot :=
   144  
   145  	Block2 = &orgtypes.Block{
   146  		Header: &orgtypes.Header{
   147  			Version:       0x01,
   148  			PrevBlockHash: Block1.Hash(),
   149  			LeagueId:      LeagueAddress1,
   150  			TxRoot:        otxs.GetHashRoot(),
   151  			StateRoot:     common.Hash{},
   152  			ReceiptsRoot:  common.Hash{},
   153  			Difficulty:    big.NewInt(10),
   154  			Height:        2,
   155  			Timestamp:     uint64(time.Now().Unix()),
   156  		},
   157  		Transactions: otxs,
   158  	}
   159  
   160  	Blocks = append(Blocks, Block1, Block2, Block3, Block4, Block5, Block6, Block7)
   161  }
   162  func InitTransactions() {
   163  	TxList = make(map[common.Hash]*maintypes.Transaction)
   164  	CreateLeagueTxMap = make(map[common.Address]*maintypes.Transaction)
   165  	CreateLeagueTx = &maintypes.Transaction{
   166  		Version: 0x01,
   167  		TxType:  maintypes.CreateLeague,
   168  		TxData: &maintypes.TxData{
   169  			From:    Address_1,
   170  			Nonce:   1,
   171  			Fee:     big.NewInt(10),
   172  			Rate:    1000,
   173  			MinBox:  10,
   174  			MetaBox: big.NewInt(2000),
   175  			NodeId:  NodeId,
   176  			Private: false,
   177  		},
   178  	}
   179  
   180  	CreateLeagueTxMap[ToLeagueAddress(CreateLeagueTx)] = CreateLeagueTx
   181  	var (
   182  		maintxs maintypes.Transactions
   183  	)
   184  
   185  	txd1 := &maintypes.TxData{
   186  		LeagueId: LeagueAddress1,
   187  		Fee:      big.NewInt(10),
   188  		Energy:     big.NewInt(2000),
   189  		From:     Address_1,
   190  		Nonce:    1,
   191  	}
   192  	Tx1 = &maintypes.Transaction{
   193  		Version: 0x01,
   194  		TxType:  maintypes.EnergyToLeague,
   195  		TxData:  txd1,
   196  	}
   197  
   198  	common.DeepCopy(&Tx2, Tx1)
   199  	Tx2.TxType = maintypes.JoinLeague
   200  	Tx2.TxData.LeagueNonce = 10
   201  	Tx2.TxData.From = Address_2
   202  	Tx2.TxData.Account = Address_2
   203  	Tx2.TxData.Nonce = 1
   204  	Tx2.TxData.MinBox = CreateLeagueTx.TxData.MinBox
   205  
   206  	common.DeepCopy(&Tx3, Tx1)
   207  	Tx3.TxType = maintypes.JoinLeague
   208  	Tx3.TxData.LeagueNonce = 11
   209  	Tx3.TxData.From = Address_3
   210  	Tx3.TxData.Account = Address_3
   211  	Tx3.TxData.Nonce = 1
   212  	Tx3.TxData.MinBox = CreateLeagueTx.TxData.MinBox
   213  
   214  	common.DeepCopy(&Tx4, Tx1)
   215  	Tx4.TxType = maintypes.EnergyToLeague
   216  	Tx4.TxData.LeagueNonce = 11
   217  	Tx4.TxData.From = Address_2
   218  	Tx4.TxData.Nonce = 2
   219  	Tx4.TxData.Energy = big.NewInt(1500)
   220  
   221  	common.DeepCopy(&Tx5, Tx1)
   222  	Tx5.TxType = maintypes.EnergyToLeague
   223  	Tx5.TxData.LeagueNonce = 12
   224  	Tx5.TxData.From = Address_2
   225  	Tx5.TxData.Nonce = 3
   226  	Tx5.TxData.Energy = big.NewInt(2000)
   227  
   228  	maintxs = append(maintxs, Tx1, Tx2, Tx3, Tx4, Tx5)
   229  	for k, v := range maintxs {
   230  		TxList[v.Hash()] = maintxs[k]
   231  	}
   232  	/*
   233  		53m4x7z349sjd857zwpfu2d8e1v6rgh6jk1yg9t7fq7vxds6rnx1====
   234  		pevhqgd4827rg441y4g5bwxx32zexr5v5ryup5duzcpgs76pg5u1====
   235  		u2kehc55estec4kt9dvzafnrnqwdc16pvxj893dw8fprfd3ty1vh====
   236  		av362nhkksdpbd8w9dw9g24c92tqxuxu8nzy3umed8xy3ste7awh====
   237  		9umzce1r3qxedj2qvs1ewtj4j1fjedwt6rems8rnvmbqqw78p821====
   238  	*/
   239  }
   240  
   241  func GetTransaction(txId common.Hash) (*maintypes.Transaction, uint64, error) {
   242  	return TxList[txId], 0, nil
   243  }
   244  
   245  func ToLeagueAddress(tx *maintypes.Transaction) common.Address {
   246  	sk := sink.NewZeroCopySink(nil)
   247  	sk.WriteAddress(tx.TxData.From)
   248  	sk.WriteAddress(tx.TxData.NodeId)
   249  	cp, _ := sink.BigIntToComplex(tx.TxData.MetaBox)
   250  	sk.WriteComplex(cp)
   251  	sk.WriteUint64(tx.TxData.MinBox)
   252  	sk.WriteUint32(tx.TxData.Rate)
   253  	sk.WriteBool(tx.TxData.Private)
   254  	league, _ := common.CreateLeagueAddress(sk.Bytes())
   255  	return league
   256  }