diff --git a/packages/go-kosu/witness/event_decoder.go b/packages/go-kosu/witness/event_decoder.go new file mode 100644 index 00000000..52888b39 --- /dev/null +++ b/packages/go-kosu/witness/event_decoder.go @@ -0,0 +1,71 @@ +package witness + +import ( + "errors" + "fmt" + "go-kosu/store" + "math/big" +) + +// EventPosterRegistryUpdate represent a decoded PosterRegistryUpdate event +type EventPosterRegistryUpdate struct { + Amount *big.Int + Address store.Address +} + +// EventValidatorRegistryUpdate represent a decoded ValidatorRegistryUpdate event +type EventValidatorRegistryUpdate struct { + Amount *big.Int + Address store.Address + PublicKey []byte +} + +// DecodeKosuEvent tries to decode an EventEmitterKosuEvent from the Ethereum blockchain +func DecodeKosuEvent(ev *EventEmitterKosuEvent, t interface{}) error { + if ev.Data == nil { + return errors.New("data field is empty") + } + + switch ev.EventType { + case "PosterRegistryUpdate": + dst, ok := t.(*EventPosterRegistryUpdate) + if !ok { + return fmt.Errorf("invalid type '%T' for PosterRegistryUpdate event", t) + } + return decodePosterRegistryUpdate(ev, dst) + case "ValidatorRegistryUpdate": + dst, ok := t.(*EventValidatorRegistryUpdate) + if !ok { + return fmt.Errorf("invalid type '%T' for ValidatorRegistryUpdate event", t) + } + return decodeValidatorRegistryUpdate(ev, dst) + } + + return fmt.Errorf("don't know how to handle event '%s'", ev.EventType) +} + +func newAddress(data [32]byte) (store.Address, error) { + return store.NewAddress(data[12:]) +} + +func decodePosterRegistryUpdate(ev *EventEmitterKosuEvent, dst *EventPosterRegistryUpdate) error { + address, err := newAddress(ev.Data[0]) + if err != nil { + return err + } + dst.Address = address + dst.Amount = big.NewInt(0).SetBytes(ev.Data[1][:]) + + return nil +} + +func decodeValidatorRegistryUpdate(ev *EventEmitterKosuEvent, dst *EventValidatorRegistryUpdate) error { + address, err := newAddress(ev.Data[1]) + if err != nil { + return err + } + dst.Address = address + dst.PublicKey = ev.Data[0][:] + dst.Amount = big.NewInt(0).SetBytes(ev.Data[2][:]) + return nil +} diff --git a/packages/go-kosu/witness/event_decoder_test.go b/packages/go-kosu/witness/event_decoder_test.go new file mode 100644 index 00000000..ce2ac894 --- /dev/null +++ b/packages/go-kosu/witness/event_decoder_test.go @@ -0,0 +1,102 @@ +// nolint:lll +package witness + +import ( + "encoding/hex" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +/* +Event sample: +&{ + EventType:PosterRegistryUpdate, + Data:[ + [0 0 0 0 0 0 0 0 0 0 0 0 197 33 244 131 246 7 235 94 164 214 178 223 219 213 64 19 71 83 168 101] + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 53 201 173 197 222 160 0 0] + ], + StringData: "", + Raw: { + Address:[47 58 254 255 9 20 243 55 105 205 251 243 252 248 112 195 59 38 195 17], + Topics:[ + [189 100 126 158 46 239 23 47 63 222 199 104 53 130 154 36 250 133 178 140 109 116 199 22 231 232 165 200 126 191 198 131] + ], + Data:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 80 111 115 116 101 114 82 101 103 105 115 116 114 121 85 112 100 97 116 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 197 33 244 131 246 7 235 94 164 214 178 223 219 213 64 19 71 83 168 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 53 201 173 197 222 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], + BlockNumber:179, + TxHash:[254 44 32 185 99 231 19 3 49 66 107 150 41 50 126 209 225 171 83 37 91 202 130 213 197 171 220 249 25 175 158 185] + TxIndex:0 + BlockHash:[137 33 85 47 221 52 12 204 168 235 214 187 95 58 253 82 202 49 113 33 29 230 25 58 32 196 120 188 1 208 50 96] + Index:1 + Removed:false + } +}" +*/ +func TestEventPosterRegistryUpdateDecoding(t *testing.T) { + newEvent := func() *EventEmitterKosuEvent { + return &EventEmitterKosuEvent{ + EventType: "PosterRegistryUpdate", + Data: [][32]byte{ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 33, 244, 131, 246, 7, 235, 94, 164, 214, 178, 223, 219, 213, 64, 19, 71, 83, 168, 101}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 53, 201, 173, 197, 222, 160, 0, 0}, + }, + } + } + + t.Run("ValidEvent", func(t *testing.T) { + src := newEvent() + dst := &EventPosterRegistryUpdate{} + + require.NoError(t, + DecodeKosuEvent(src, dst), + ) + + assert.Equal(t, "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", dst.Address.String()) + assert.Equal(t, "1000000000000000000000", dst.Amount.String()) + }) + + t.Run("InvalidType", func(t *testing.T) { + src := newEvent() + dst := struct{}{} + + require.Error(t, + DecodeKosuEvent(src, dst), + ) + }) +} + +func TestEventValidatorRegistryUpdateDecoding(t *testing.T) { + newEvent := func() *EventEmitterKosuEvent { + return &EventEmitterKosuEvent{ + EventType: "ValidatorRegistryUpdate", + Data: [][32]byte{ + {222, 173, 190, 239}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 33, 244, 131, 246, 7, 235, 94, 164, 214, 178, 223, 219, 213, 64, 19, 71, 83, 168, 101}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 53, 201, 173, 197, 222, 160, 0, 0}, + }, + } + } + + t.Run("ValidaEvent", func(t *testing.T) { + src := newEvent() + dst := &EventValidatorRegistryUpdate{} + + require.NoError(t, + DecodeKosuEvent(src, dst), + ) + + assert.Equal(t, "deadbeef00000000000000000000000000000000000000000000000000000000", hex.EncodeToString(dst.PublicKey)) + assert.Equal(t, "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", dst.Address.String()) + assert.Equal(t, "1000000000000000000000", dst.Amount.String()) + }) + + t.Run("InvalidType", func(t *testing.T) { + src := newEvent() + dst := struct{}{} + + require.Error(t, + DecodeKosuEvent(src, dst), + ) + }) +} diff --git a/packages/go-kosu/witness/witness.go b/packages/go-kosu/witness/witness.go index f79c9d10..7831b593 100644 --- a/packages/go-kosu/witness/witness.go +++ b/packages/go-kosu/witness/witness.go @@ -11,7 +11,6 @@ import ( "go-kosu/abci" "go-kosu/abci/types" - "go-kosu/store" ) // EventHandler is a callback that handles EventEmitterKosuEvent @@ -161,17 +160,18 @@ func (w *Witness) broadcastTxSync(tx interface{}, args []interface{}) { } func (w *Witness) handlePosterRegistryUpdate(e *EventEmitterKosuEvent) { - // offset by 12 because the 20 byte address is packed into 32 bytes - address, err := store.NewAddress(e.Data[0][12:]) - if err != nil { + w.log.Info("poster update event", "e", e) + + event := &EventPosterRegistryUpdate{} + if err := DecodeKosuEvent(e, event); err != nil { panic(err) } tx := &types.TransactionWitness{ Subject: types.TransactionWitness_POSTER, - Amount: types.NewBigInt(e.Data[1][:]), + Amount: types.NewBigInt(event.Amount.Bytes()), Block: e.Raw.BlockNumber, - Address: address.String(), + Address: event.Address.String(), } w.broadcastTxSync(tx, []interface{}{ @@ -181,15 +181,19 @@ func (w *Witness) handlePosterRegistryUpdate(e *EventEmitterKosuEvent) { } func (w *Witness) handleValidatorRegistryUpdate(e *EventEmitterKosuEvent) { - // offset by 12 because the 20 byte address is packed into 32 bytes - address, _ := store.NewAddress(e.Data[1][12:]) + w.log.Info("validator update event", "e", e) + + event := &EventValidatorRegistryUpdate{} + if err := DecodeKosuEvent(e, event); err != nil { + panic(err) + } tx := &types.TransactionWitness{ Subject: types.TransactionWitness_VALIDATOR, Block: e.Raw.BlockNumber, - PublicKey: e.Data[0][:], - Address: address.String(), - Amount: types.NewBigInt(e.Data[2][:]), + PublicKey: event.PublicKey, + Address: event.Address.String(), + Amount: types.NewBigInt(event.Amount.Bytes()), } w.broadcastTxSync(tx, []interface{}{ diff --git a/packages/kosu-system-contracts/src/deployedAddresses.json b/packages/kosu-system-contracts/src/deployedAddresses.json index 183081d2..ec16116c 100644 --- a/packages/kosu-system-contracts/src/deployedAddresses.json +++ b/packages/kosu-system-contracts/src/deployedAddresses.json @@ -183,23 +183,23 @@ }, "6174": { "OrderGateway": { - "blockHash": "0xf9c69afa9389ab1d913b3e94766d8e4eb86ed521787204eece2b3588963b7919", - "blockNumber": 637, + "blockHash": "0xc1dd219677dc1aeaab7c8e3c34bf1eb42b0b2dca30914b4a9a4ca471250677b8", + "blockNumber": 8, "contractAddress": "0xb8fda6341f80cbae987ab5cd00dce502097e3152", - "cumulativeGasUsed": 471973, + "cumulativeGasUsed": 499206, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 471973, + "gasUsed": 499206, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0x488fa71bfffde09acdd54657496051ececa6458faafc03933038a2922188da74", + "transactionHash": "0x43e782aa5841eff497954f8f5aebc913b0e4f06c13fe50e15b8f3016878ccc36", "transactionIndex": 0, - "timestamp": 1566238523 + "timestamp": 1566913000 }, "AuthorizedAddresses": { - "blockHash": "0x45953e988eaa5391d36a3c0fede8a5aed7fe0bb9b5be04617fb04f41af30b253", - "blockNumber": 640, + "blockHash": "0x52fdb909db1919270fd37c60ccadbd16957820a2147914c506a2d3e996589a03", + "blockNumber": 10, "contractAddress": "0xe473109cb41c773fd2fe01e83c6e51356f9585d6", "cumulativeGasUsed": 326984, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", @@ -213,10 +213,10 @@ "0x000000000000000000000000c521f483f607eb5ea4d6b2dfdbd540134753a865" ], "data": "0x", - "blockNumber": 640, - "transactionHash": "0x31ac1b05aa1e5deb254651e7ac24bbfd720d28dd6d8524a99e3f283d888017bc", + "blockNumber": 10, + "transactionHash": "0xe46c7ae062fb28fcaaa7e051e65f26336318ce749f5e3397f7db5e76f5c67448", "transactionIndex": 0, - "blockHash": "0x45953e988eaa5391d36a3c0fede8a5aed7fe0bb9b5be04617fb04f41af30b253", + "blockHash": "0x52fdb909db1919270fd37c60ccadbd16957820a2147914c506a2d3e996589a03", "logIndex": 0, "removed": false } @@ -224,92 +224,92 @@ "logsBloom": "0x00040000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000008008000000000000000020000000000000000000800000000800000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000020000000000000004000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0x31ac1b05aa1e5deb254651e7ac24bbfd720d28dd6d8524a99e3f283d888017bc", + "transactionHash": "0xe46c7ae062fb28fcaaa7e051e65f26336318ce749f5e3397f7db5e76f5c67448", "transactionIndex": 0, - "timestamp": 1566238526 + "timestamp": 1566913002 }, "EventEmitter": { - "blockHash": "0x6f7b81b3b96e23fb58355b9bcfdb4ab9a247fd02f09e0c9434e06484a7f8c620", - "blockNumber": 643, + "blockHash": "0xe4241cae23a0cb55034eafe4d8e05672b5406a7a3136d0b448baa416af717e80", + "blockNumber": 12, "contractAddress": "0x2f3afeff0914f33769cdfbf3fcf870c33b26c311", - "cumulativeGasUsed": 265922, + "cumulativeGasUsed": 265858, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 265922, + "gasUsed": 265858, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0x03083b44120902eba5e1d5f10afd793cad2eead508028d9a5a7a7456c8c38a0d", + "transactionHash": "0xa41ba447e80eff706c4fd2ab9be017fbbbd466fa2aeee1f317a80037193b1c5e", "transactionIndex": 0, - "timestamp": 1566238529 + "timestamp": 1566913004 }, "KosuToken": { - "blockHash": "0xb8fbc044ee2c616aa2735f7cf6d6423ffcf7f9086bd225c23d3e58bc4a745cfb", - "blockNumber": 647, + "blockHash": "0xaafb7db844a759ad1907d0f36c6558fbe5ac4804780f74a9a7636b35b9826dd1", + "blockNumber": 14, "contractAddress": "0xcc868306d6188b2b12757a7c3926042b4d3c4e29", - "cumulativeGasUsed": 2991564, + "cumulativeGasUsed": 2940460, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 2991564, + "gasUsed": 2940460, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0x9601e3fad1a31293f555da5b86919f367eaa75465057dcb1e3be74466295a012", + "transactionHash": "0x805ed3a09e32433111a1d350c9594f8abc0276da576b3cc18a4746dba1a116be", "transactionIndex": 0, - "timestamp": 1566238533 + "timestamp": 1566913006 }, "Treasury": { - "blockHash": "0x21b1c9675dec7c1b04e01cc237bef676c9420103912dd16ab7e098a6aeeb8966", - "blockNumber": 650, + "blockHash": "0xb2a620ea66e98e08695afdb9af6696005836cf297ba0fa313e25691d9f101433", + "blockNumber": 16, "contractAddress": "0x46572f9082dd2429c2c138fa9483a67d4f29d423", - "cumulativeGasUsed": 1247144, + "cumulativeGasUsed": 1500558, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 1247144, + "gasUsed": 1500558, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0x0c80c84436a04ad433c702f375d68acc11d801a45eb63423ab7b4c7a85565875", + "transactionHash": "0x6d278e8b74f07114cc2d43bbaf66952509f46f25e3c66cc7d8c946eebb641095", "transactionIndex": 0, - "timestamp": 1566238536 + "timestamp": 1566913008 }, "Voting": { - "blockHash": "0x44444bed5e5502590c8ea549acc047fd9763fd83cb0635b2988066ed6da817fd", - "blockNumber": 653, + "blockHash": "0x06bc366639d6adebaf3f2df6f91a44fe7bb6bf61301a55b3c69e9dbe4c8bb43a", + "blockNumber": 18, "contractAddress": "0x5d60c93d8b48682cd387c8be7e9461b67ecfbea1", - "cumulativeGasUsed": 799337, + "cumulativeGasUsed": 805303, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 799337, + "gasUsed": 805303, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0xe300eeb4694c187e94ff031cd0f08f880dab05311770e4c66ae9e4ea0022cca5", + "transactionHash": "0x3df9335efaa5ec926e613a3f7d74fc9d9a4ca2ba80e987fb762d550e70e494eb", "transactionIndex": 0, - "timestamp": 1566238539 + "timestamp": 1566913010 }, "PosterRegistry": { - "blockHash": "0x1e3e243fc187edd1e2256f8c066f246f2eb5ded83b2b0ff4942295d44328a6fe", - "blockNumber": 656, + "blockHash": "0x9b36a4bde71615463caa082e742f9b76ed5653689242e856146ec5305a879efe", + "blockNumber": 20, "contractAddress": "0x7e6534b8205713246e91a14b462d2dbcac3ede17", - "cumulativeGasUsed": 588627, + "cumulativeGasUsed": 588560, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 588627, + "gasUsed": 588560, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0xb48db614edc164c647a7acf32501f2286ac710e4ae41c679bbdc4eae40cd363b", + "transactionHash": "0xcf032fb714603d8e885c720e6a014ae803f4655758cc1aaef9fb422efab6af38", "transactionIndex": 0, - "timestamp": 1566238542 + "timestamp": 1566913012 }, "ValidatorRegistry": { - "blockHash": "0xbb817273679dd69525339770050da5d9f56e999639e3d36ec70231cbdbc5c9be", - "blockNumber": 660, + "blockHash": "0x75d61b28e7a2da9dc42ba77fc0d70663335d60fab0f97a5e349879c9ed55bac9", + "blockNumber": 22, "contractAddress": "0x301bb008f2a8a3cae9918743fe43428551392773", - "cumulativeGasUsed": 5038146, + "cumulativeGasUsed": 5085032, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", - "gasUsed": 5038146, + "gasUsed": 5085032, "logs": [ { "address": "0x301bb008f2a8a3cae9918743fe43428551392773", @@ -319,10 +319,10 @@ "0x000000000000000000000000c521f483f607eb5ea4d6b2dfdbd540134753a865" ], "data": "0x", - "blockNumber": 660, - "transactionHash": "0x09c5195a3f77f868080fe912c01db665015e9f4ca96a3562ed0479845b37229f", + "blockNumber": 22, + "transactionHash": "0x2b9ee9625e820d5fafbe5487045826a9b492c58e5bc90526dfed1f1e83ddc5d4", "transactionIndex": 0, - "blockHash": "0xbb817273679dd69525339770050da5d9f56e999639e3d36ec70231cbdbc5c9be", + "blockHash": "0x75d61b28e7a2da9dc42ba77fc0d70663335d60fab0f97a5e349879c9ed55bac9", "logIndex": 0, "removed": false } @@ -330,13 +330,13 @@ "logsBloom": "0x01000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000800000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000400000000000020000000000000004000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0x09c5195a3f77f868080fe912c01db665015e9f4ca96a3562ed0479845b37229f", + "transactionHash": "0x2b9ee9625e820d5fafbe5487045826a9b492c58e5bc90526dfed1f1e83ddc5d4", "transactionIndex": 0, - "timestamp": 1566238546 + "timestamp": 1566913014 }, "ZeroExV2SubContract": { - "blockHash": "0x39355bf2163c96ddae48bd9f229274acc53fe079b448bf226e3fad403d2e8d65", - "blockNumber": 664, + "blockHash": "0xe58341927292114f6e13704836875c6d5d73a2d38fa1bc9a0a75779eea221003", + "blockNumber": 24, "contractAddress": "0x0265e7d1b094787cb13174e18a1cefc41279a6c9", "cumulativeGasUsed": 1776876, "from": "0xc521f483f607eb5ea4d6b2dfdbd540134753a865", @@ -345,9 +345,9 @@ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": 1, "to": null, - "transactionHash": "0xaacdb0574ab2fe3eddd87ff4b6234d01adbc6adfe30d92b727d8f5c15f3f7b88", + "transactionHash": "0x6107bb721f19ddd2eb5f5a9db67c3757fee6b84c9c283d508a777315ec298ce3", "transactionIndex": 0, - "timestamp": 1566238550 + "timestamp": 1566913016 } }, "6175": {