本文整理汇总了Golang中github.com/piotrnar/gocoin/client/network.NetRouteInv函数的典型用法代码示例。如果您正苦于以下问题:Golang NetRouteInv函数的具体用法?Golang NetRouteInv怎么用?Golang NetRouteInv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NetRouteInv函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: LocalAcceptBlock
func LocalAcceptBlock(bl *btc.Block, from *network.OneConnection) (e error) {
sta := time.Now()
e = common.BlockChain.AcceptBlock(bl)
if e == nil {
network.MutexRcv.Lock()
network.ReceivedBlocks[bl.Hash.BIdx()].TmAccept = time.Now().Sub(sta)
network.MutexRcv.Unlock()
for i := 1; i < len(bl.Txs); i++ {
network.TxMined(bl.Txs[i].Hash)
}
if int64(bl.BlockTime) > time.Now().Add(-10*time.Minute).Unix() {
// Freshly mined block - do the inv and beeps...
common.Busy("NetRouteInv")
network.NetRouteInv(2, bl.Hash, from)
if common.CFG.Beeps.NewBlock {
fmt.Println("\007Received block", common.BlockChain.BlockTreeEnd.Height)
textui.ShowPrompt()
}
if common.MinedByUs(bl.Raw) {
fmt.Println("\007Mined by '"+common.CFG.Beeps.MinerID+"':", bl.Hash)
textui.ShowPrompt()
}
if common.CFG.Beeps.ActiveFork && common.Last.Block == common.BlockChain.BlockTreeEnd {
// Last block has not changed, so it must have been an orphaned block
bln := common.BlockChain.BlockIndex[bl.Hash.BIdx()]
commonNode := common.Last.Block.FirstCommonParent(bln)
forkDepth := bln.Height - commonNode.Height
fmt.Println("Orphaned block:", bln.Height, bl.Hash.String())
if forkDepth > 1 {
fmt.Println("\007\007\007WARNING: the fork is", forkDepth, "blocks deep")
}
textui.ShowPrompt()
}
if wallet.BalanceChanged && common.CFG.Beeps.NewBalance {
fmt.Print("\007")
}
}
common.Last.Mutex.Lock()
common.Last.Time = time.Now()
common.Last.Block = common.BlockChain.BlockTreeEnd
common.Last.Mutex.Unlock()
if wallet.BalanceChanged {
wallet.BalanceChanged = false
fmt.Println("Your balance has just changed")
fmt.Print(wallet.DumpBalance(nil, false))
textui.ShowPrompt()
}
} else {
fmt.Println("Warning: AcceptBlock failed. If the block was valid, you may need to rebuild the unspent DB (-r)")
}
return
}
开发者ID:Bitoy,项目名称:gocoin,代码行数:60,代码来源:main.go
示例2: new_block_mined
// Freshly mined block - do the inv and beeps... TODO: combine it with the other code
func new_block_mined(bl *btc.Block, conn *network.OneConnection) {
common.Busy("NetRouteInv")
network.NetRouteInv(2, bl.Hash, conn)
if common.CFG.Beeps.NewBlock {
fmt.Println("\007Received block", common.BlockChain.BlockTreeEnd.Height)
textui.ShowPrompt()
}
if common.CFG.Beeps.MinerID != "" {
//_, rawtxlen := btc.NewTx(bl[bl.TxOffset:])
if bytes.Contains(bl.Txs[0].Serialize(), []byte(common.CFG.Beeps.MinerID)) {
fmt.Println("\007Mined by '"+common.CFG.Beeps.MinerID+"':", bl.Hash)
textui.ShowPrompt()
}
}
if common.CFG.Beeps.ActiveFork && common.Last.Block == common.BlockChain.BlockTreeEnd {
// Last block has not changed, so it must have been an orphaned block
bln := common.BlockChain.BlockIndex[bl.Hash.BIdx()]
commonNode := common.Last.Block.FirstCommonParent(bln)
forkDepth := bln.Height - commonNode.Height
fmt.Println("Orphaned block:", bln.Height, bl.Hash.String(), bln.BlockSize>>10, "KB")
if forkDepth > 1 {
fmt.Println("\007\007\007WARNING: the fork is", forkDepth, "blocks deep")
}
textui.ShowPrompt()
}
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:30,代码来源:main.go
示例3: xmp_txs2s
func xmp_txs2s(w http.ResponseWriter, r *http.Request) {
if !ipchecker(r) {
return
}
r.ParseForm()
if checksid(r) && len(r.Form["del"]) > 0 {
tid := btc.NewUint256FromString(r.Form["del"][0])
if tid != nil {
network.TxMutex.Lock()
delete(network.TransactionsToSend, tid.Hash)
network.TxMutex.Unlock()
}
}
if checksid(r) && len(r.Form["send"]) > 0 {
tid := btc.NewUint256FromString(r.Form["send"][0])
if tid != nil {
network.TxMutex.Lock()
if ptx, ok := network.TransactionsToSend[tid.Hash]; ok {
network.TxMutex.Unlock()
cnt := network.NetRouteInv(1, tid, nil)
ptx.Invsentcnt += cnt
}
}
}
w.Header()["Content-Type"] = []string{"text/xml"}
if len(r.Form["id"]) > 0 {
output_tx_xml(w, r.Form["id"][0])
return
}
w.Write([]byte("<txpool>"))
network.TxMutex.Lock()
for k, v := range network.TransactionsToSend {
w.Write([]byte("<tx>"))
fmt.Fprint(w, "<id>", btc.NewUint256(k[:]).String(), "</id>")
fmt.Fprint(w, "<time>", v.Firstseen.Unix(), "</time>")
fmt.Fprint(w, "<len>", len(v.Data), "</len>")
fmt.Fprint(w, "<own>", v.Own, "</own>")
fmt.Fprint(w, "<firstseen>", v.Firstseen.Unix(), "</firstseen>")
fmt.Fprint(w, "<invsentcnt>", v.Invsentcnt, "</invsentcnt>")
fmt.Fprint(w, "<sentcnt>", v.SentCnt, "</sentcnt>")
fmt.Fprint(w, "<sentlast>", v.Lastsent.Unix(), "</sentlast>")
fmt.Fprint(w, "<volume>", v.Volume, "</volume>")
fmt.Fprint(w, "<fee>", v.Fee, "</fee>")
fmt.Fprint(w, "<blocked>", v.Blocked, "</blocked>")
w.Write([]byte("</tx>"))
}
network.TxMutex.Unlock()
w.Write([]byte("</txpool>"))
}
开发者ID:johtso,项目名称:gocoin,代码行数:55,代码来源:transactions.go
示例4: send_all_tx
func send_all_tx(par string) {
network.TxMutex.Lock()
for k, v := range network.TransactionsToSend {
if v.Own != 0 {
cnt := network.NetRouteInv(1, btc.NewUint256(k[:]), nil)
v.Invsentcnt += cnt
fmt.Println("INV for TxID", btc.NewUint256(k[:]).String(), "sent to", cnt, "node(s)")
}
}
network.TxMutex.Unlock()
}
开发者ID:ripplecripple,项目名称:gocoin,代码行数:11,代码来源:txcmds.go
示例5: send_inv
func send_inv(par string) {
cs := strings.Split(par, " ")
if len(cs) != 2 {
println("Specify hash and type")
return
}
ha := btc.NewUint256FromString(cs[1])
if ha == nil {
println("Incorrect hash")
return
}
v, e := strconv.ParseInt(cs[0], 10, 32)
if e != nil {
println("Incorrect type:", e.Error())
return
}
network.NetRouteInv(uint32(v), ha, nil)
fmt.Println("Inv sent to all peers")
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:19,代码来源:textui.go
示例6: send_tx
func send_tx(par string) {
txid := btc.NewUint256FromString(par)
if txid == nil {
fmt.Println("You must specify a valid transaction ID for this command.")
list_txs("")
return
}
network.TxMutex.Lock()
if ptx, ok := network.TransactionsToSend[txid.Hash]; ok {
network.TxMutex.Unlock()
cnt := network.NetRouteInv(1, txid, nil)
ptx.Invsentcnt += cnt
fmt.Println("INV for TxID", txid.String(), "sent to", cnt, "node(s)")
fmt.Println("If it does not appear in the chain, you may want to redo it.")
} else {
network.TxMutex.Unlock()
fmt.Println("No such transaction ID in the memory pool.")
list_txs("")
}
}
开发者ID:ripplecripple,项目名称:gocoin,代码行数:20,代码来源:txcmds.go
示例7: xml_txs2s
func xml_txs2s(w http.ResponseWriter, r *http.Request) {
if !ipchecker(r) {
return
}
if checksid(r) {
if len(r.Form["del"]) > 0 {
tid := btc.NewUint256FromString(r.Form["del"][0])
if tid != nil {
network.TxMutex.Lock()
delete(network.TransactionsToSend, tid.BIdx())
network.TxMutex.Unlock()
}
}
if len(r.Form["send"]) > 0 {
tid := btc.NewUint256FromString(r.Form["send"][0])
if tid != nil {
network.TxMutex.Lock()
if ptx, ok := network.TransactionsToSend[tid.BIdx()]; ok {
network.TxMutex.Unlock()
cnt := network.NetRouteInv(1, tid, nil)
if cnt == 0 {
usif.SendInvToRandomPeer(1, tid)
} else {
ptx.Invsentcnt += cnt
}
} else {
network.TxMutex.Unlock()
}
}
}
if len(r.Form["sendone"]) > 0 {
tid := btc.NewUint256FromString(r.Form["sendone"][0])
if tid != nil {
network.TxMutex.Lock()
if ptx, ok := network.TransactionsToSend[tid.BIdx()]; ok {
network.TxMutex.Unlock()
usif.SendInvToRandomPeer(1, tid)
ptx.Invsentcnt++
} else {
network.TxMutex.Unlock()
}
}
}
}
w.Header()["Content-Type"] = []string{"text/xml"}
if len(r.Form["id"]) > 0 {
output_tx_xml(w, r.Form["id"][0])
return
}
w.Write([]byte("<txpool>"))
network.TxMutex.Lock()
for _, v := range network.TransactionsToSend {
if len(r.Form["ownonly"]) > 0 && v.Own == 0 {
continue
}
w.Write([]byte("<tx>"))
fmt.Fprint(w, "<id>", v.Tx.Hash.String(), "</id>")
fmt.Fprint(w, "<time>", v.Firstseen.Unix(), "</time>")
fmt.Fprint(w, "<len>", len(v.Data), "</len>")
fmt.Fprint(w, "<own>", v.Own, "</own>")
fmt.Fprint(w, "<firstseen>", v.Firstseen.Unix(), "</firstseen>")
fmt.Fprint(w, "<invsentcnt>", v.Invsentcnt, "</invsentcnt>")
fmt.Fprint(w, "<sentcnt>", v.SentCnt, "</sentcnt>")
fmt.Fprint(w, "<sentlast>", v.Lastsent.Unix(), "</sentlast>")
fmt.Fprint(w, "<volume>", v.Volume, "</volume>")
fmt.Fprint(w, "<fee>", v.Fee, "</fee>")
fmt.Fprint(w, "<blocked>", v.Blocked, "</blocked>")
w.Write([]byte("</tx>"))
}
network.TxMutex.Unlock()
w.Write([]byte("</txpool>"))
}
开发者ID:bityuan,项目名称:gocoin,代码行数:79,代码来源:txs.go
示例8: LocalAcceptBlock
func LocalAcceptBlock(bl *btc.Block, from *network.OneConnection) (e error) {
sta := time.Now()
e = common.BlockChain.AcceptBlock(bl)
if e == nil {
network.MutexRcv.Lock()
network.ReceivedBlocks[bl.Hash.BIdx()].TmAccept = time.Now().Sub(sta)
network.MutexRcv.Unlock()
for i := 1; i < len(bl.Txs); i++ {
network.TxMined(bl.Txs[i])
/* dupa
if msg:=contains_message(bl.Txs[i]); msg!=nil {
for xx:=range msg {
if msg[xx]<' ' || msg[xx]>127 {
msg[xx] = '.'
}
}
fmt.Println("TX", bl.Txs[i].Hash.String(), "says:", "'" + string(msg) + "'")
textui.ShowPrompt()
}
*/
}
if int64(bl.BlockTime()) > time.Now().Add(-10*time.Minute).Unix() {
// Freshly mined block - do the inv and beeps...
common.Busy("NetRouteInv")
network.NetRouteInv(2, bl.Hash, from)
if common.CFG.Beeps.NewBlock {
fmt.Println("\007Received block", common.BlockChain.BlockTreeEnd.Height)
textui.ShowPrompt()
}
if common.CFG.Beeps.MinerID != "" {
//_, rawtxlen := btc.NewTx(bl[bl.TxOffset:])
if bytes.Contains(bl.Txs[0].Serialize(), []byte(common.CFG.Beeps.MinerID)) {
fmt.Println("\007Mined by '"+common.CFG.Beeps.MinerID+"':", bl.Hash)
textui.ShowPrompt()
}
}
if common.CFG.Beeps.ActiveFork && common.Last.Block == common.BlockChain.BlockTreeEnd {
// Last block has not changed, so it must have been an orphaned block
bln := common.BlockChain.BlockIndex[bl.Hash.BIdx()]
commonNode := common.Last.Block.FirstCommonParent(bln)
forkDepth := bln.Height - commonNode.Height
fmt.Println("Orphaned block:", bln.Height, bl.Hash.String(), bln.BlockSize>>10, "KB")
if forkDepth > 1 {
fmt.Println("\007\007\007WARNING: the fork is", forkDepth, "blocks deep")
}
textui.ShowPrompt()
}
if wallet.BalanceChanged && common.CFG.Beeps.NewBalance {
fmt.Print("\007")
}
}
common.Last.Mutex.Lock()
common.Last.Time = time.Now()
common.Last.Block = common.BlockChain.BlockTreeEnd
common.Last.Mutex.Unlock()
if wallet.BalanceChanged {
wallet.BalanceChanged = false
fmt.Println("Your balance has just changed")
fmt.Print(wallet.DumpBalance(wallet.MyBalance, nil, false, true))
textui.ShowPrompt()
}
} else {
fmt.Println("Warning: AcceptBlock failed. If the block was valid, you may need to rebuild the unspent DB (-r)")
}
return
}
开发者ID:liudch,项目名称:gocoin,代码行数:74,代码来源:main.go
示例9: xml_txs2s
func xml_txs2s(w http.ResponseWriter, r *http.Request) {
if !ipchecker(r) {
return
}
w.Header()["Content-Type"] = []string{"text/xml"}
if len(r.Form["minedid"]) > 0 && len(r.Form["minedat"]) > 0 {
output_utxo_tx_xml(w, r.Form["minedid"][0], r.Form["minedat"][0])
return
}
if len(r.Form["id"]) > 0 {
txid := btc.NewUint256FromString(r.Form["id"][0])
if txid == nil {
return
}
network.TxMutex.Lock()
defer network.TxMutex.Unlock()
if t2s, ok := network.TransactionsToSend[txid.BIdx()]; ok {
tx_xml(w, t2s, true)
} else {
w.Write([]byte("<tx>"))
fmt.Fprint(w, "<id>", txid.String(), "</id>")
w.Write([]byte("<status>Not found</status>"))
w.Write([]byte("</tx>"))
}
return
}
if checksid(r) {
if len(r.Form["del"]) > 0 {
tid := btc.NewUint256FromString(r.Form["del"][0])
if tid != nil {
network.TxMutex.Lock()
if tts, ok := network.TransactionsToSend[tid.BIdx()]; ok {
network.DeleteToSend(tts)
}
network.TxMutex.Unlock()
}
}
if len(r.Form["send"]) > 0 {
tid := btc.NewUint256FromString(r.Form["send"][0])
if tid != nil {
network.TxMutex.Lock()
if ptx, ok := network.TransactionsToSend[tid.BIdx()]; ok {
network.TxMutex.Unlock()
cnt := network.NetRouteInv(1, tid, nil)
if cnt == 0 {
usif.SendInvToRandomPeer(1, tid)
} else {
ptx.Invsentcnt += cnt
}
} else {
network.TxMutex.Unlock()
}
}
}
if len(r.Form["sendone"]) > 0 {
tid := btc.NewUint256FromString(r.Form["sendone"][0])
if tid != nil {
network.TxMutex.Lock()
if ptx, ok := network.TransactionsToSend[tid.BIdx()]; ok {
network.TxMutex.Unlock()
usif.SendInvToRandomPeer(1, tid)
ptx.Invsentcnt++
} else {
network.TxMutex.Unlock()
}
}
}
if len(r.Form["cnt"]) > 0 {
u, e := strconv.ParseUint(r.Form["cnt"][0], 10, 32)
if e == nil && u > 0 && u < 10e3 {
txs2s_count = int(u)
}
}
if len(r.Form["sort"]) > 0 && len(r.Form["sort"][0]) == 3 {
txs2s_sort = r.Form["sort"][0]
}
txs2s_sort_desc = len(r.Form["descending"]) > 0
}
network.TxMutex.Lock()
defer network.TxMutex.Unlock()
sorted := make(sortedTxList, len(network.TransactionsToSend))
var cnt int
for _, v := range network.TransactionsToSend {
if len(r.Form["ownonly"]) > 0 && v.Own == 0 {
continue
}
sorted[cnt] = v
cnt++
}
//.........这里部分代码省略.........
开发者ID:piotrnar,项目名称:gocoin,代码行数:101,代码来源:txs.go
注:本文中的github.com/piotrnar/gocoin/client/network.NetRouteInv函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论