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 }