Code Monkey home page Code Monkey logo

dex's People

Contributors

helinwang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dex's Issues

validate random beacon sig share error

group size: 3, threshold: 2, num nodes: 3, happened on node-2

INFO[Jun 23 16:40:06.666] received nodes                           count=1
INFO[Jun 23 16:40:06.666] end round                                round=0
INFO[Jun 23 16:40:06.666] connecting to peer                       addr=127.0.0.1:9004
INFO[Jun 23 16:40:07.057] start round                              round=3 rand beacon=77ad343b3c537cce4bf029c30c8ddfe8a7558050651335916a244a0fa71efcb5
INFO[Jun 23 16:40:07.057] propose block                            state root=d885e6b27c9c8feb25838f83a6db5af549a7dea7516ec1dccd61eecd049cdfa0 block state root=d885e6b27c9c8feb25838f83a6db5af549a7dea7516ec1dccd61eecd049cdfa0
INFO[Jun 23 16:40:07.061] end round                                round=1
WARN[Jun 23 16:40:07.065] validate random beacon sig share error 
INFO[Jun 23 16:40:07.065] end round                                round=2
WARN[Jun 23 16:40:07.070] validate random beacon sig share error 
INFO[Jun 23 16:40:08.071] end round                                round=3

Signature verification speed vs matching engine speed

Tested on AMD Threadripper 1950x (3.5 GHz) with single thread code.

Signature Verification

BLS signature (used for both consensus system and user transaction signing, user transaction signing can be switched to ESCDA):

5 seconds: 11500 verifications.

ESCDA (https://github.com/ethereum/go-ethereum/tree/master/crypto):

5 seconds: 41000 verifications.

Matching Engine

Single order book, 5 seconds: 10000000 limit orders

Conclution

Matching Engine is two orders of magnitude faster than signature verification.

Code:

func TestOrderBookSpeed(t *testing.T) {
        book := newOrderBook()
        const total = 10000000
        orders := make([]Order, total)
        for i := 0; i < total; i++ {
                orders[i].Price = uint64(1000 + rand.Intn(1000))
                orders[i].Quant = uint64(rand.Intn(10000) + 10)
                orders[i].SellSide = rand.Intn(2) == 0
        }

        start := time.Now()
        for _, o := range orders {
                book.Limit(o)
        }
        fmt.Println(time.Now().Sub(start), total)
}

func TestSignVerifySpeed(t *testing.T) {
        var sk bls.SecretKey
        msg := string(hexutil.MustDecode("0xce0677bb30baa8cf067c88db9811f4333d131bf8bcf12fe7065d211dce971008"))
        sign := sk.Sign(msg)
        pk := sk.GetPublicKey()

        start := time.Now()
        for i := 0; i < 11500; i++ {
                sign.Verify(pk, msg)
        }
        fmt.Println(time.Now().Sub(start))
}

func TestEtherVerifySpeed(t *testing.T) {
        testmsg := hexutil.MustDecode("0xce0677bb30baa8cf067c88db9811f4333d131bf8bcf12fe7065d211dce971008")
        testsig := hexutil.MustDecode("0x90f27b8b488db00b00606796d2987f6a5f59ae62ea05effe84fef5b8b0e549984a691139ad57a3f0b906637673aa2f63d1f55cb1a69199d4009eea23ceaddc9301")
        testpubkey := hexutil.MustDecode("0x04e32df42865e97135acfb65f3bae71bdc86f4d49150ad6a440b6f15878109880a0a2b2667f7e725ceea70c673093bf67663e0312623c8e091b13cf2c0f11ef652")

        start := time.Now()
        sig := testsig[:len(testsig)-1] // remove recovery id                                                                                                                                                                                                                 
        for i := 0; i < 41000; i++ {
                if !crypto.VerifySignature(testpubkey, testmsg, sig) {
                        panic("verify failed")
                }
        }
        fmt.Println(time.Now().Sub(start))
}

Unexpected order already expired

go test -bench . -cpuprofile=bench.prof
WARN[Jun 27 10:17:58.932] order already expired                    expire round=1 cur round=1
WARN[Jun 27 10:17:58.932] placeOrder failed 

save items received for bigger round, or sync with peer when stuck

DBUG[Jun 4 21:48:49.154] start round round=56868 addr=ea77
INFO[Jun 4 21:48:49.155] serving BlockItem id="{T:BlockItem ItemRound:56867 Ref:6378 Hash:08fb}" item=08fb
DBUG[Jun 4 21:48:49.155] proposing block addr=ea77 round=56868 hash=0b85
INFO[Jun 4 21:48:49.157] addBP called hash=0b85 weight=1
INFO[Jun 4 21:48:49.159] AddRandBeaconSigShare groupID=1 hash=a8db
INFO[Jun 4 21:48:49.165] recv inventory inventory="[{T:BlockItem ItemRound:56867 Ref:6378 Hash:08fb}]"
INFO[Jun 4 21:48:49.165] serving BlockProposalItem id="{T:BlockProposalItem ItemRound:56868 Ref:08fb Hash:0b85}" item=0b85
INFO[Jun 4 21:48:49.165] serving RandBeaconShareItem id="{T:RandBeaconShareItem ItemRound:56868 Ref:0000 Hash:a8db}" item=a8db
INFO[Jun 4 21:48:49.165] recv inventory inventory="[{T:BlockProposalItem ItemRound:56868 Ref:08fb Hash:0d6f}]"
INFO[Jun 4 21:48:49.165] request BlockProposalItem item="{T:BlockProposalItem ItemRound:56868 Ref:08fb Hash:0d6f}"
INFO[Jun 4 21:48:49.165] recv inventory inventory="[{T:RandBeaconShareItem ItemRound:56868 Ref:0000 Hash:d592}]"
INFO[Jun 4 21:48:49.165] request RandBeaconShareItem item="{T:RandBeaconShareItem ItemRound:56868 Ref:0000 Hash:d592}"
INFO[Jun 4 21:48:49.166] recv inventory inventory="[{T:BlockProposalItem ItemRound:56868 Ref:08fb Hash:0b85}]"
INFO[Jun 4 21:48:49.171] recv inventory inventory="[{T:RandBeaconItem ItemRound:56868 Ref:0000 Hash:cf86}]"
INFO[Jun 4 21:48:49.171] request RandBeaconItem item="{T:RandBeaconItem ItemRound:56868 Ref:0000 Hash:cf86}"
INFO[Jun 4 21:48:49.173] addBP called hash=0d6f weight=0.25
INFO[Jun 4 21:48:49.174] AddRandBeaconSig round=56868 hash=cf86
INFO[Jun 4 21:48:49.355] recv trades root=0000
INFO[Jun 4 21:48:49.355] recv nt share hash=45f5
INFO[Jun 4 21:48:49.356] addNtShare called hash=45f5 group=0
INFO[Jun 4 21:48:49.356] serving NtShareItem id="{T:NtShareItem ItemRound:56868 Ref:0b85 Hash:45f5}" item=45f5
INFO[Jun 4 21:48:49.359] recv inventory inventory="[{T:NtShareItem ItemRound:56868 Ref:0b85 Hash:45f5}]"
INFO[Jun 4 21:48:49.369] recv inventory inventory="[{T:BlockProposalItem ItemRound:56869 Ref:f9f1 Hash:fb2b}]"
INFO[Jun 4 21:48:49.369] request BlockProposalItem item="{T:BlockProposalItem ItemRound:56869 Ref:f9f1 Hash:fb2b}"
*** --> WARN[Jun 4 21:48:49.369] received block proposal of higher round round=56869 my round=56868
INFO[Jun 4 21:48:49.370] recv inventory inventory="[{T:BlockItem ItemRound:56868 Ref:08fb Hash:f9f1}]"
INFO[Jun 4 21:48:49.370] request BlockItem item="{T:BlockItem ItemRound:56868 Ref:08fb Hash:f9f1}"
INFO[Jun 4 21:48:49.371] addBP called hash=0b85 weight=0
INFO[Jun 4 21:48:49.371] addBlock called hash=f9f1 weight=0
DBUG[Jun 4 21:48:49.371] start round round=56869 addr=ea77
INFO[Jun 4 21:48:49.371] recv inventory inventory="[{T:RandBeaconShareItem ItemRound:56869 Ref:0000 Hash:e3e2}]"
INFO[Jun 4 21:48:49.371] request RandBeaconShareItem item="{T:RandBeaconShareItem ItemRound:56869 Ref:0000 Hash:e3e2}"
DBUG[Jun 4 21:48:49.372] proposing block addr=ea77 round=56869 hash=8a3a
INFO[Jun 4 21:48:49.373] addBP called hash=8a3a weight=0.25
INFO[Jun 4 21:48:49.374] AddRandBeaconSigShare groupID=5 hash=e3e2
INFO[Jun 4 21:48:49.374] serving BlockProposalItem id="{T:BlockProposalItem ItemRound:56869 Ref:f9f1 Hash:8a3a}" item=8a3a
INFO[Jun 4 21:48:49.375] AddRandBeaconSigShare groupID=5 hash=785c
INFO[Jun 4 21:48:49.376] recv inventory inventory="[{T:BlockProposalItem ItemRound:56869 Ref:f9f1 Hash:8a3a}]"
INFO[Jun 4 21:48:49.377] AddRandBeaconSig round=56869 hash=ad8d
INFO[Jun 4 21:48:49.377] serving RandBeaconItem id="{T:RandBeaconItem ItemRound:56869 Ref:0000 Hash:ad8d}" item=ad8d
INFO[Jun 4 21:48:49.377] recv inventory inventory="[{T:RandBeaconItem ItemRound:56869 Ref:0000 Hash:ad8d}]"
INFO[Jun 4 21:48:49.567] recv inventory inventory="[{T:NtShareItem ItemRound:56869 Ref:fb2b Hash:884b}]"
INFO[Jun 4 21:48:49.567] request NtShareItem item="{T:NtShareItem ItemRound:56869 Ref:fb2b Hash:884b}"
INFO[Jun 4 21:48:49.568] recv nt share hash=884b
*** --> WARN[Jun 4 21:48:49.568] ValidateNtShare: prev block not found
INFO[Jun 4 21:48:49.573] recv trades root=0000
INFO[Jun 4 21:48:49.573] recv nt share hash=56ab
INFO[Jun 4 21:48:49.575] addNtShare called hash=56ab group=1
INFO[Jun 4 21:48:49.576] serving NtShareItem id="{T:NtShareItem ItemRound:56869 Ref:8a3a Hash:56ab}" item=56ab
INFO[Jun 4 21:48:49.579] recv inventory inventory="[{T:NtShareItem ItemRound:56869 Ref:8a3a Hash:56ab}]"

The above test run got stuck because the random beacon share for the next round was received.

Another log:

WARN[Jun 6 10:38:43.911] block already received
WARN[Jun 6 10:40:44.125] received random beacon share for bigger round round=218791 expecting=218790
WARN[Jun 6 10:58:45.794] received block proposal of higher round round=224012 my round=224011
WARN[Jun 6 10:58:45.983] ValidateNtShare: prev block not found

chain not finalizing correctly

Config: 3 groups, group size 3, threshold 2, nodes 9

screen shot 2018-06-27 at 5 36 12 pm

digraph chain {
rankdir=LR;
size="12,8"
node [shape = rect, style=filled, color = chartreuse2]; block_c134 block_ca5e block_7ab5 num_blocks_omitted_to_save_space_144 block_a133 block_a7e9 block_c4be
node [shape = rect, style=filled, color = aquamarine]; block_6e56 block_bbe6 block_da33 block_5019 block_a88c block_5963 block_2e1e block_6404 block_2f20 block_a83d block_93a3 block_a402 block_1b0c
node [shape = octagon, style=filled, color = aliceblue]; proposal_cd98 proposal_b66d proposal_6208 proposal_c0b6 proposal_8a1a proposal_548c proposal_029b proposal_deba proposal_3808 proposal_e10b proposal_5716 proposal_8bd9 proposal_6867 proposal_06d3 proposal_024d proposal_24c7 proposal_6f1c proposal_06da proposal_51d7 proposal_8b59 proposal_efa6 proposal_0912 proposal_6bea proposal_4c92 proposal_a1bb proposal_c86e proposal_be6b proposal_f41d proposal_a70b
block_c134 -> block_ca5e -> block_7ab5 -> num_blocks_omitted_to_save_space_144 -> block_a133 -> block_a7e9 -> block_c4be
block_c4be -> proposal_cd98
block_c4be -> proposal_b66d
block_c4be -> block_6e56
block_6e56 -> block_bbe6
block_bbe6 -> block_da33
block_da33 -> block_5019
block_5019 -> block_a88c
block_a88c -> block_5963
block_5963 -> block_2e1e
block_2e1e -> block_6404
block_6404 -> block_2f20
block_2f20 -> block_a83d
block_a83d -> block_93a3
block_93a3 -> block_a402
block_a402 -> block_1b0c
block_1b0c -> proposal_6208
block_1b0c -> proposal_c0b6
block_1b0c -> proposal_8a1a
block_a402 -> proposal_548c
block_a402 -> proposal_029b
block_93a3 -> proposal_deba
block_93a3 -> proposal_3808
block_a83d -> proposal_e10b
block_a83d -> proposal_5716
block_2f20 -> proposal_8bd9
block_2f20 -> proposal_6867
block_6404 -> proposal_06d3
block_6404 -> proposal_024d
block_2e1e -> proposal_24c7
block_2e1e -> proposal_6f1c
block_5963 -> proposal_06da
block_5963 -> proposal_51d7
block_a88c -> proposal_8b59
block_a88c -> proposal_efa6
block_5019 -> proposal_0912
block_5019 -> proposal_6bea
block_da33 -> proposal_4c92
block_da33 -> proposal_a1bb
block_bbe6 -> proposal_c86e
block_bbe6 -> proposal_be6b
block_6e56 -> proposal_f41d
block_6e56 -> proposal_a70b

}

crash during sync

DBUG[Jun 22 14:43:37.559] add random beacon signature share        groupID=8 round=54
DBUG[Jun 22 14:43:37.559] skipped the RandBeaconSigShare of different round than expected round=54 expected=3131
DBUG[Jun 22 14:43:37.561] add block proposal to chain              hash=40536322729ca30864a496de15c1c992ac1bf93f917bca03c94d20a90cfda65f weight=1
DBUG[Jun 22 14:43:37.562] add block to chain                       hash=bf2c24ca63937f957fe5a20ce2ecec15910cb4dc659553a1f4bc1b0999918e83 weight=1
INFO[Jun 22 14:43:37.562] end round                                round=55
DBUG[Jun 22 14:43:37.564] add block proposal to chain              hash=c8ee20a7f3767b175840931acbcbab0f12aa0346e86a663dddb0f065f3ae5b4b weight=1
DBUG[Jun 22 14:43:37.566] add block to chain                       hash=d6c8dba3bfb0f92f8a4f71f4d8d0fffdc90ec44d09d07371d7e20b6e71930a58 weight=1
INFO[Jun 22 14:43:37.566] end round                                round=56
WARN[Jun 22 14:43:37.567] validate random beacon sig share error 
DBUG[Jun 22 14:43:37.568] add block proposal to chain              hash=d48d846fb7f98407dcaa0f86f26a50fcd92b3ba61d488f0a14609d077e4520f7 weight=0.5
panic: TODO

goroutine 22365 [running]:
github.com/helinwang/dex/pkg/consensus.(*Notary).notarize(0xc42128c230, 0xc422671b90, 0x0)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/notary.go:101 +0x4f6
github.com/helinwang/dex/pkg/consensus.(*Notary).Notarize(0xc42128c230, 0x8f9440, 0xc420537020, 0x8f93c0, 0xc4214a5d80, 0xc420536ba0, 0xc420b78f88)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/notary.go:37 +0x587
github.com/helinwang/dex/pkg/consensus.(*Node).StartRound.func2(0xc4202800a0, 0xc42128c230, 0x8f9440, 0xc420537020, 0xc4212cf060, 0xc420536ba0, 0xc4212cf090)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/node.go:114 +0x86
created by github.com/helinwang/dex/pkg/consensus.(*Node).StartRound
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/node.go:109 +0x552
exit status 2

crashed at here:

        state := n.chain.BlockToState(bp.PrevBlock)
        if state == nil {
		panic("TODO")
        }

can not find expiring order, happened once, need to reproduce

panic: can not find expiring order

goroutine 37749 [running]:
github.com/helinwang/dex/pkg/dex.(*Transition).expireOrders(0xc420594960)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/dex/transition.go:609 +0x443
github.com/helinwang/dex/pkg/dex.(*Transition).finalizeState(0xc420594960)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/dex/transition.go:509 +0x6b
github.com/helinwang/dex/pkg/dex.(*Transition).Txns(0xc420594960, 0x20, 0x20, 0xc422648000)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/dex/transition.go:447 +0x2f
github.com/helinwang/dex/pkg/consensus.(*Chain).ProposeBlock(0xc4200f07e0, 0x90c360, 0xc4208050e0, 0xc4201d6620, 0x20, 0x20, 0x2ef, 0xc420668a00)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/chain.go:185 +0x44a
github.com/helinwang/dex/pkg/consensus.(*Node).proposeBlock(0xc42001f130, 0x2ef, 0x2, 0xbec61965fb7edf53, 0xb06c6bb8bc, 0xd21c00)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/node.go:109 +0x3b2
created by github.com/helinwang/dex/pkg/consensus.(*Node).StartRound
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/node.go:161 +0x9a6

panic: insufficient pending balance

panic: insufficient pending balance, owner: 53caa814037ee8bfb75ea625c1471b9039ff4942, pending 1798270000, executed: 1802300000

goroutine 117539 [running]:
github.com/helinwang/dex/pkg/dex.(*Transition).placeOrder(0xc42024c280, 0xc42035c2a0, 0x0, 0x79c42e1f, 0x38d3bac0, 0x0, 0x0, 0x1, 0xd, 0xa8)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/dex/transition.go:352 +0x19cf
github.com/helinwang/dex/pkg/dex.(*Transition).Record(0xc42024c280, 0xc420bb35e0, 0xd9, 0xd9, 0x2bff66dd7ab09e95)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/dex/transition.go:68 +0x2d3
github.com/helinwang/dex/pkg/consensus.(*Chain).ProposeBlock(0xc4202b4000, 0xc420024800, 0x20, 0x20, 0x12)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/chain.go:131 +0x16d
github.com/helinwang/dex/pkg/consensus.(*Node).StartRound(0xc420276840, 0xd)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/node.go:97 +0x727
created by github.com/helinwang/dex/pkg/consensus.(*RandomBeacon).AddRandBeaconSig
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/random_beacon.go:148 +0x555

panic: block proposal's parent not found

DBUG[Jun 25 15:00:32.662] requesting item                          item=TxnItem_hash_ddd9abeff4088c4ec47899e1f64a453af4b8ee280d3f02699ab5d5b61112a8ef
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_d87539870c88d109e0cb8603d5dcf1d8aec8f224594f04157df0185dd9f9bf18 addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_22b7267738278bfac0d251eea7406399586773672a567c9762889e69883761a9 addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_184866e63cf9449f7b82956d84d6747839c33d8d9c76e7c3db246c9cb56ef45a addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_cde9a5a6870e2f7ae05d9c6e238bb7cffdc6ce3a00b0943b6ce3d8ea05d1a9d6 addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] recvTxn                                  hash=ddd9abeff4088c4ec47899e1f64a453af4b8ee280d3f02699ab5d5b61112a8ef
DBUG[Jun 25 15:00:32.662] requesting item                          item=TxnItem_hash_8d9231a2d36a294de5a64b82c0f6e117eff08cfc49e9c86a25c9fa2b41f6a77a
DBUG[Jun 25 15:00:32.662] requesting item                          item=TxnItem_hash_37771409d0802dc95e92233c2d61faa4e2a5c8ee11b7199db7a2b28de3e0ccdc
DBUG[Jun 25 15:00:32.662] recvTxn                                  hash=8d9231a2d36a294de5a64b82c0f6e117eff08cfc49e9c86a25c9fa2b41f6a77a
DBUG[Jun 25 15:00:32.662] recvTxn                                  hash=37771409d0802dc95e92233c2d61faa4e2a5c8ee11b7199db7a2b28de3e0ccdc
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_ddd9abeff4088c4ec47899e1f64a453af4b8ee280d3f02699ab5d5b61112a8ef addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] requesting item                          item=TxnItem_hash_eb0d8ead949d311b66e56a8045dd5d43c09325fe7f8d54470beaf022cd0e5d07
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_8d9231a2d36a294de5a64b82c0f6e117eff08cfc49e9c86a25c9fa2b41f6a77a addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] serving item                             item=TxnItem_hash_37771409d0802dc95e92233c2d61faa4e2a5c8ee11b7199db7a2b28de3e0ccdc addr=127.0.0.1:9006
DBUG[Jun 25 15:00:32.662] requesting item                          item=TxnItem_hash_2ee0c3d919ac312ce06a925f1fa7c365bbdcade521897774a5c474a8187a5835
DBUG[Jun 25 15:00:32.663] add block proposal to chain              hash=289c2428fcd56697db601b37c384e4518384e20a1812992ad250322d326ec6f2 weight=0.25 round=21
digraph chain {
rankdir=LR;
size="12,8"
node [shape = rect, style=filled, color = chartreuse2]; block_44b3 block_6d4d block_ebcf block_3278 block_67bb num_blocks_omitted_to_save_space_15 block_c42b block_0fed block_2eb8 block_e755 block_df64
node [shape = rect, style=filled, color = aquamarine]; block_7bce block_ec60
node [shape = octagon, style=filled, color = aliceblue]; proposal_329e
block_44b3 -> block_6d4d -> block_ebcf -> block_3278 -> block_67bb -> num_blocks_omitted_to_save_space_15 -> block_c42b -> block_0fed -> block_2eb8 -> block_e755 -> block_df64
block_df64 -> block_7bce
block_7bce -> block_ec60
block_7bce -> proposal_329e

}

DBUG[Jun 25 15:00:32.662] recvTxn                                  hash=eb0d8ead949d311b66e56a8045dd5d43c09325fe7f8d54470beaf022cd0e5d07
DBUG[Jun 25 15:00:32.663] recvTxn                                  hash=2ee0c3d919ac312ce06a925f1fa7c365bbdcade521897774a5c474a8187a5835
panic: block proposal's parent not found: c42b86c143c3fa487ba092417909c71f22f90cbb7f63df15e37b08f9b1911714, round: 21

goroutine 144587 [running]:
github.com/helinwang/dex/pkg/consensus.(*syncer).syncBlockProposal(0xc42025ffc0, 0xc4201d43c0, 0xe, 0xc420318140, 0x40, 0x9766d5fc28249c28, 0x51e484c3371b60db, 0x2a9912180ae28483, 0xf2c66e322d3250d2, 0xc4201dcfdc, ...)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/syncer.go:242 +0x6ec
github.com/helinwang/dex/pkg/consensus.(*syncer).SyncBlockProposal.func1(0xc42025ffc0, 0xc4201d43c0, 0xe, 0xc420318140, 0x40, 0x9766d5fc28249c28, 0x51e484c3371b60db, 0x2a9912180ae28483, 0xf2c66e322d3250d2)
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/syncer.go:175 +0x97
created by github.com/helinwang/dex/pkg/consensus.(*syncer).SyncBlockProposal
	/home/helin/env/gopath/src/github.com/helinwang/dex/pkg/consensus/syncer.go:174 +0x2cb

insufficent pending balance

INFO[Jun 23 18:57:33.171] end round round=0
INFO[Jun 23 18:57:34.014] start round round=1 rand beacon=1b3a74b40aece9ee8f25a5cdea01ae09cf988371ab8a2b0a704513d22add5892
INFO[Jun 23 18:57:35.037] end round round=1
INFO[Jun 23 18:57:35.045] start round round=2 rand beacon=d3b75ed1e6929d8a4af4e1f67bf08e225bdb75a85196b90d8f97617c57b85cb8
INFO[Jun 23 18:57:36.070] end round round=2
INFO[Jun 23 18:57:36.082] start round round=3 rand beacon=77ad343b3c537cce4bf029c30c8ddfe8a7558050651335916a244a0fa71efcb5
INFO[Jun 23 18:57:37.103] end round round=3
INFO[Jun 23 18:57:37.117] start round round=4 rand beacon=7eb175cd6d72bbe91574100f6387ee175e6ffe0b20700ff55f14e8d44f974cf5
INFO[Jun 23 18:57:37.123] add pending order order="{ID:{ID:0 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1096900000 Price:95610000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.125] add pending order order="{ID:{ID:0 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1012900000 Price:105430000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.128] add pending order order="{ID:{ID:0 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1112200000 Price:119029999 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.131] add pending order order="{ID:{ID:1 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1078300000 Price:113690000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.131] found pending order pre order="{ID:{ID:1 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1078300000 Price:113690000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:1 SellSide:false Quant:1012900000 Price:105430000 Taker:true}" key=701184902
INFO[Jun 23 18:57:37.131] found pending order pre order="{ID:{ID:0 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1012900000 Price:105430000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:0 SellSide:true Quant:1012900000 Price:105430000 Taker:false}" key=591172171
INFO[Jun 23 18:57:37.132] found pending order order="{ID:{ID:0 Market:{Base:2 Quote:1}} Executed:1012900000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1012900000 Price:105430000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:0 SellSide:true Quant:1012900000 Price:105430000 Taker:false}" key=591172171
INFO[Jun 23 18:57:37.133] add pending order order="{ID:{ID:1 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:937700000 Price:105729999 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.135] add pending order order="{ID:{ID:2 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:941300000 Price:102220000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.135] found pending order pre order="{ID:{ID:2 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:941300000 Price:102220000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:65400000 Price:113690000 Taker:true}" key=659141293
INFO[Jun 23 18:57:37.135] found pending order pre order="{ID:{ID:1 Market:{Base:2 Quote:1}} Executed:1012900000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1078300000 Price:113690000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:1 SellSide:false Quant:65400000 Price:113690000 Taker:false}" key=505832833
INFO[Jun 23 18:57:37.136] found pending order order="{ID:{ID:1 Market:{Base:2 Quote:1}} Executed:1078300000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1078300000 Price:113690000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:1 SellSide:false Quant:65400000 Price:113690000 Taker:false}" key=505832833
INFO[Jun 23 18:57:37.137] add pending order order="{ID:{ID:2 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1079300000 Price:99510000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.138] found pending order pre order="{ID:{ID:2 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1079300000 Price:99510000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:937700000 Price:105729999 Taker:true}" key=220861162
INFO[Jun 23 18:57:37.138] found pending order pre order="{ID:{ID:1 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:937700000 Price:105729999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:1 SellSide:false Quant:937700000 Price:105729999 Taker:false}" key=111475090
INFO[Jun 23 18:57:37.138] found pending order order="{ID:{ID:1 Market:{Base:0 Quote:2}} Executed:937700000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:937700000 Price:105729999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:1 SellSide:false Quant:937700000 Price:105729999 Taker:false}" key=111475090
INFO[Jun 23 18:57:37.140] add pending order order="{ID:{ID:1 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1011500000 Price:122560000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.144] add pending order order="{ID:{ID:3 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1008900000 Price:100269999 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.147] add pending order order="{ID:{ID:3 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1034400000 Price:103820000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.150] add pending order order="{ID:{ID:4 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1106800000 Price:99140000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.153] add pending order order="{ID:{ID:2 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:937299999 Price:104270000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.156] add pending order order="{ID:{ID:4 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1149100000 Price:102860000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.158] add pending order order="{ID:{ID:5 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1061100000 Price:97720000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.160] add pending order order="{ID:{ID:5 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:960399999 Price:115040000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.160] found pending order pre order="{ID:{ID:5 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:960399999 Price:115040000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:5 SellSide:false Quant:141600000 Price:99510000 Taker:true}" key=965141362
INFO[Jun 23 18:57:37.160] found pending order pre order="{ID:{ID:2 Market:{Base:0 Quote:2}} Executed:937700000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1079300000 Price:99510000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:141600000 Price:99510000 Taker:false}" key=569618094
INFO[Jun 23 18:57:37.160] found pending order order="{ID:{ID:2 Market:{Base:0 Quote:2}} Executed:1079300000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1079300000 Price:99510000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:141600000 Price:99510000 Taker:false}" key=569618094
INFO[Jun 23 18:57:37.160] found pending order pre order="{ID:{ID:5 Market:{Base:0 Quote:2}} Executed:141600000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:960399999 Price:115040000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:5 SellSide:false Quant:818799999 Price:100269999 Taker:true}" key=768459589
INFO[Jun 23 18:57:37.161] found pending order order="{ID:{ID:5 Market:{Base:0 Quote:2}} Executed:960399999 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:960399999 Price:115040000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:5 SellSide:false Quant:818799999 Price:100269999 Taker:true}" key=768459589
INFO[Jun 23 18:57:37.161] found pending order pre order="{ID:{ID:3 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1008900000 Price:100269999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:true Quant:818799999 Price:100269999 Taker:false}" key=812503800
INFO[Jun 23 18:57:37.163] add pending order order="{ID:{ID:6 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1106700000 Price:107320000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.165] add pending order order="{ID:{ID:3 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1011800000 Price:99600000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.165] found pending order pre order="{ID:{ID:3 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1011800000 Price:99600000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:false Quant:1011800000 Price:95610000 Taker:true}" key=624799624
INFO[Jun 23 18:57:37.165] found pending order order="{ID:{ID:3 Market:{Base:0 Quote:1}} Executed:1011800000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1011800000 Price:99600000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:false Quant:1011800000 Price:95610000 Taker:true}" key=624799624
INFO[Jun 23 18:57:37.165] found pending order pre order="{ID:{ID:0 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1096900000 Price:95610000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:0 SellSide:true Quant:1011800000 Price:95610000 Taker:false}" key=102600726
INFO[Jun 23 18:57:37.167] add pending order order="{ID:{ID:6 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1063700000 Price:109320000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.167] found pending order pre order="{ID:{ID:6 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1063700000 Price:109320000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:6 SellSide:false Quant:1061100000 Price:97720000 Taker:true}" key=345743279
INFO[Jun 23 18:57:37.167] found pending order pre order="{ID:{ID:5 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1061100000 Price:97720000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:5 SellSide:true Quant:1061100000 Price:97720000 Taker:false}" key=806441655
INFO[Jun 23 18:57:37.167] found pending order order="{ID:{ID:5 Market:{Base:2 Quote:1}} Executed:1061100000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1061100000 Price:97720000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:5 SellSide:true Quant:1061100000 Price:97720000 Taker:false}" key=806441655
INFO[Jun 23 18:57:37.168] found pending order pre order="{ID:{ID:6 Market:{Base:2 Quote:1}} Executed:1061100000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1063700000 Price:109320000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:6 SellSide:false Quant:2600000 Price:99140000 Taker:true}" key=925920595
INFO[Jun 23 18:57:37.168] found pending order order="{ID:{ID:6 Market:{Base:2 Quote:1}} Executed:1063700000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1063700000 Price:109320000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:6 SellSide:false Quant:2600000 Price:99140000 Taker:true}" key=925920595
INFO[Jun 23 18:57:37.168] found pending order pre order="{ID:{ID:4 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1106800000 Price:99140000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:4 SellSide:true Quant:2600000 Price:99140000 Taker:false}" key=431346435
INFO[Jun 23 18:57:37.170] add pending order order="{ID:{ID:7 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1132200000 Price:119900000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.170] found pending order pre order="{ID:{ID:7 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1132200000 Price:119900000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:7 SellSide:false Quant:1104200000 Price:99140000 Taker:true}" key=946128911
INFO[Jun 23 18:57:37.170] found pending order pre order="{ID:{ID:4 Market:{Base:2 Quote:1}} Executed:2600000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1106800000 Price:99140000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:4 SellSide:true Quant:1104200000 Price:99140000 Taker:false}" key=567759365
INFO[Jun 23 18:57:37.170] found pending order order="{ID:{ID:4 Market:{Base:2 Quote:1}} Executed:1106800000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1106800000 Price:99140000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:4 SellSide:true Quant:1104200000 Price:99140000 Taker:false}" key=567759365
INFO[Jun 23 18:57:37.171] found pending order pre order="{ID:{ID:7 Market:{Base:2 Quote:1}} Executed:1104200000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1132200000 Price:119900000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:7 SellSide:false Quant:28000000 Price:102220000 Taker:true}" key=649325258
INFO[Jun 23 18:57:37.171] found pending order order="{ID:{ID:7 Market:{Base:2 Quote:1}} Executed:1132200000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1132200000 Price:119900000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:7 SellSide:false Quant:28000000 Price:102220000 Taker:true}" key=649325258
INFO[Jun 23 18:57:37.171] found pending order pre order="{ID:{ID:2 Market:{Base:2 Quote:1}} Executed:65400000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:941300000 Price:102220000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:28000000 Price:102220000 Taker:false}" key=338089403
INFO[Jun 23 18:57:37.173] add pending order order="{ID:{ID:7 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1170700000 Price:117170000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.173] found pending order pre order="{ID:{ID:7 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1170700000 Price:117170000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:7 SellSide:false Quant:190100001 Price:100269999 Taker:true}" key=430470065
INFO[Jun 23 18:57:37.173] found pending order pre order="{ID:{ID:3 Market:{Base:0 Quote:2}} Executed:818799999 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1008900000 Price:100269999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:true Quant:190100001 Price:100269999 Taker:false}" key=3552636
INFO[Jun 23 18:57:37.173] found pending order order="{ID:{ID:3 Market:{Base:0 Quote:2}} Executed:1008900000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1008900000 Price:100269999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:true Quant:190100001 Price:100269999 Taker:false}" key=3552636
INFO[Jun 23 18:57:37.174] found pending order pre order="{ID:{ID:7 Market:{Base:0 Quote:2}} Executed:190100001 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1170700000 Price:117170000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:7 SellSide:false Quant:980599999 Price:102860000 Taker:true}" key=9976846
INFO[Jun 23 18:57:37.174] found pending order order="{ID:{ID:7 Market:{Base:0 Quote:2}} Executed:1170700000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1170700000 Price:117170000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:7 SellSide:false Quant:980599999 Price:102860000 Taker:true}" key=9976846
INFO[Jun 23 18:57:37.174] found pending order pre order="{ID:{ID:4 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1149100000 Price:102860000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:4 SellSide:true Quant:980599999 Price:102860000 Taker:false}" key=327289571
INFO[Jun 23 18:57:37.176] add pending order order="{ID:{ID:8 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:972600000 Price:102270000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.178] add pending order order="{ID:{ID:9 Market:{Base:0 Quote:2}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1132600000 Price:100289999 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.180] add pending order order="{ID:{ID:4 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1027399999 Price:112979999 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.181] found pending order pre order="{ID:{ID:4 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1027399999 Price:112979999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:4 SellSide:false Quant:85100000 Price:95610000 Taker:true}" key=526307141
INFO[Jun 23 18:57:37.181] found pending order pre order="{ID:{ID:0 Market:{Base:0 Quote:1}} Executed:1011800000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1096900000 Price:95610000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:0 SellSide:true Quant:85100000 Price:95610000 Taker:false}" key=196340224
INFO[Jun 23 18:57:37.181] found pending order order="{ID:{ID:0 Market:{Base:0 Quote:1}} Executed:1096900000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1096900000 Price:95610000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:0 SellSide:true Quant:85100000 Price:95610000 Taker:false}" key=196340224
INFO[Jun 23 18:57:37.181] found pending order pre order="{ID:{ID:4 Market:{Base:0 Quote:1}} Executed:85100000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1027399999 Price:112979999 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:4 SellSide:false Quant:937299999 Price:104270000 Taker:true}" key=629680253
INFO[Jun 23 18:57:37.181] found pending order pre order="{ID:{ID:2 Market:{Base:0 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:937299999 Price:104270000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:937299999 Price:104270000 Taker:false}" key=286033357
INFO[Jun 23 18:57:37.181] found pending order order="{ID:{ID:2 Market:{Base:0 Quote:1}} Executed:937299999 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:937299999 Price:104270000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:937299999 Price:104270000 Taker:false}" key=286033357
INFO[Jun 23 18:57:37.184] add pending order order="{ID:{ID:8 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1040000000 Price:108580000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.184] found pending order pre order="{ID:{ID:8 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1040000000 Price:108580000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:8 SellSide:false Quant:847900000 Price:102220000 Taker:true}" key=277368943
INFO[Jun 23 18:57:37.184] found pending order pre order="{ID:{ID:2 Market:{Base:2 Quote:1}} Executed:93400000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:941300000 Price:102220000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:847900000 Price:102220000 Taker:false}" key=768099309
INFO[Jun 23 18:57:37.184] found pending order order="{ID:{ID:2 Market:{Base:2 Quote:1}} Executed:941300000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:941300000 Price:102220000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:2 SellSide:true Quant:847900000 Price:102220000 Taker:false}" key=768099309
INFO[Jun 23 18:57:37.184] found pending order pre order="{ID:{ID:8 Market:{Base:2 Quote:1}} Executed:847900000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1040000000 Price:108580000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:8 SellSide:false Quant:192100000 Price:103820000 Taker:true}" key=141558100
INFO[Jun 23 18:57:37.184] found pending order order="{ID:{ID:8 Market:{Base:2 Quote:1}} Executed:1040000000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1040000000 Price:108580000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:8 SellSide:false Quant:192100000 Price:103820000 Taker:true}" key=141558100
INFO[Jun 23 18:57:37.184] found pending order pre order="{ID:{ID:3 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1034400000 Price:103820000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:true Quant:192100000 Price:103820000 Taker:false}" key=258871884
INFO[Jun 23 18:57:37.187] add pending order order="{ID:{ID:9 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1153300000 Price:116990000 ExpireHeight:0}}"
INFO[Jun 23 18:57:37.187] found pending order pre order="{ID:{ID:9 Market:{Base:2 Quote:1}} Executed:0 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:false Quant:1153300000 Price:116990000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:9 SellSide:false Quant:842300000 Price:103820000 Taker:true}" key=685045733
INFO[Jun 23 18:57:37.187] found pending order pre order="{ID:{ID:3 Market:{Base:2 Quote:1}} Executed:192100000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1034400000 Price:103820000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:true Quant:842300000 Price:103820000 Taker:false}" key=356994214
INFO[Jun 23 18:57:37.187] found pending order order="{ID:{ID:3 Market:{Base:2 Quote:1}} Executed:1034400000 Order:{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 SellSide:true Quant:1034400000 Price:103820000 ExpireHeight:0}}" exec="{Owner:53caa814037ee8bfb75ea625c1471b9039ff4942 ID:3 SellSide:true Quant:842300000 Price:103820000 Taker:false}" key=356994214
panic: insufficient pending balance, owner: 53caa814037ee8bfb75ea625c1471b9039ff4942, pending 830830002, executed: 842300000, refund: 0, taker: false, sellSideBalance: &{100000011469998 830830002 []}, buySideBalance: &{20998756036239 369487901 []}, exec.Quant: 842300000, soldQuant: 842300000, boughtQuant: 874475860

Plan: June 9 - June 30

Goal:

A DEX blockchain that is low-latency and high-throughput.

Week 6/11: finish everything, robust.

  • test result
  • complete all required features
  • persist data on db
  • sync
  • ICO if have time

Week 6/18:

  • finish scaling up by partition txn submission by account multiple broker groups and a single notary group. The final notary group can sort the orders using the permutation derived from the random beacon and len(orders) (which block proposers do not know) to prevent front-running.
  • Updated test result

Week 6/25:

  • documentation: white paper, design rationals, tutorials (e.g., how to use different tools under cmd/)
  • code clean up
  • pre-built binaries, docker images for building and running
  • license (probably need LGPLv3) and double check dependencies' licenses.

Required features:

  • sending and receiving of the native coin
  • new token creation
  • sending, receiving tokens
  • freeze token
  • burn token (adjust token total supply too)
  • ability to trade one token with another token (all within the same chain)
    • limit orders and matching
    • expire orders according to block height
  • execution report
  • charge fee: "As network resources are required to process each order, a fee will apply. The order fee will be dynamically adjust based on how busy the network is, similar to other network fees". Fee events: token transfer, order submission, order cancellation, trade event, ICO.

Bonus feature:

  • native on-chain ICO
  • IOC order (order expires at the same height as the recorded height)
  • FOK order
  • market order

DEX challenges

We are optimistic that some day, there will be excellent fully decentralized exchanges. We intend to sponsor academia and support multiple projects in this space. Exchanges need to be fast, scalable and avoid problems such as order book front-running. For the time being, most decentralized exchanges demonstrate weaknesses one at least one of these factors. Some hybrid models are attempting to get the best of both world. Over time there will be better, more decentralized exchanges available. - rambo1stbld https://www.reddit.com/r/IAmA/comments/8p456q/we_are_binance_labs_a_blockchain_technology/e08cvi4/

Opinions are mine, not those of Binance Labs: I believe the biggest innovation in near term happens in the protocol level, as the change blockchain brings is more of a structural/horizontal change. But there are certain issues we need to solve for this innovation, including Scalability, Decentralization, Privacy, Security and Compliance. We are looking for projects who are solving the scalability issue without sacrificing interoperability, achieving decentralization while ensuring efficiency, preserving privacy while not compromising transparency, enhancing security while promoting usability and being compliant. - christychoi https://www.reddit.com/r/IAmA/comments/8p456q/we_are_binance_labs_a_blockchain_technology/e08ehdc/

Some promising hybrid exchanges are testing decentralized custody combined with centralized order books. I came across one project that was attempting the reverse. This space is evolving very rapidly and I look forward to learning about creative solutions for improving the crypto market's efficiency. - rambo1stbld https://www.reddit.com/r/IAmA/comments/8p456q/we_are_binance_labs_a_blockchain_technology/e08irq9/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.