本文整理汇总了Golang中github.com/piotrnar/gocoin/lib/btc.NewUint256FromString函数的典型用法代码示例。如果您正苦于以下问题:Golang NewUint256FromString函数的具体用法?Golang NewUint256FromString怎么用?Golang NewUint256FromString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewUint256FromString函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: raw_tx
func raw_tx(w http.ResponseWriter, r *http.Request) {
if !ipchecker(r) {
return
}
defer func() {
if r := recover(); r != nil {
fmt.Fprintln(w, "Error")
if err, ok := r.(error); ok {
fmt.Fprintln(w, err.Error())
}
}
}()
if len(r.Form["id"]) == 0 {
fmt.Println("No id given")
return
}
txid := btc.NewUint256FromString(r.Form["id"][0])
fmt.Fprintln(w, "TxID:", txid.String())
if tx, ok := network.TransactionsToSend[txid.BIdx()]; ok {
s, _, _, _, _ := usif.DecodeTx(tx.Tx)
w.Write([]byte(s))
} else {
fmt.Fprintln(w, "Not found")
}
}
开发者ID:bityuan,项目名称:gocoin,代码行数:28,代码来源:txs.go
示例2: output_utxo_tx_xml
func output_utxo_tx_xml(w http.ResponseWriter, minedid, minedat string) {
txid := btc.NewUint256FromString(minedid)
if txid == nil {
return
}
block_number, er := strconv.ParseUint(minedat, 10, 32)
if er != nil {
return
}
lck := new(usif.OneLock)
lck.In.Add(1)
lck.Out.Add(1)
usif.LocksChan <- lck
lck.In.Wait()
w.Write([]byte("<tx>"))
fmt.Fprint(w, "<id>", minedid, "</id>")
if dat, er := common.BlockChain.GetRawTx(uint32(block_number), txid); er == nil {
w.Write([]byte("<status>OK</status>"))
w.Write([]byte(fmt.Sprint("<size>", len(dat), "</size>")))
tx, _ := btc.NewTx(dat)
output_tx_xml(w, tx)
} else {
w.Write([]byte("<status>Not found</status>"))
}
w.Write([]byte("</tx>"))
lck.Out.Done()
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:32,代码来源:txs.go
示例3: parserec
func parserec(vv []interface{}) (ret *testvector) {
ret = new(testvector)
for i, u := range vv[0].([]interface{}) {
switch uu := u.(type) {
case []interface{}:
txid := btc.NewUint256FromString(uu[0].(string))
newrec := oneinp{txid: txid, vout: int(uu[1].(float64)), pkscr: uu[2].(string)}
if len(uu) > 3 {
newrec.value = uint64(uu[3].(float64))
}
ret.inps = append(ret.inps, newrec)
default:
fmt.Printf(" - %d is of a type %T\n", i, uu)
}
}
ret.tx = vv[1].(string)
params := vv[2].(string)
var e error
ret.ver_flags, e = decode_flags(params) // deifned in script_test.go
if e != nil {
println("skip", params)
ret.skip = e.Error()
}
return
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:25,代码来源:tx_test.go
示例4: output_tx_xml
func output_tx_xml(w http.ResponseWriter, id string) {
txid := btc.NewUint256FromString(id)
w.Write([]byte("<tx>"))
fmt.Fprint(w, "<id>", id, "</id>")
if t2s, ok := network.TransactionsToSend[txid.BIdx()]; ok {
w.Write([]byte("<status>OK</status>"))
w.Write([]byte(fmt.Sprint("<len>", len(t2s.Data), "</len>")))
tx := t2s.Tx
w.Write([]byte("<inputs>"))
for i := range tx.TxIn {
w.Write([]byte("<input>"))
var po *btc.TxOut
inpid := btc.NewUint256(tx.TxIn[i].Input.Hash[:])
if txinmem, ok := network.TransactionsToSend[inpid.BIdx()]; ok {
if int(tx.TxIn[i].Input.Vout) < len(txinmem.TxOut) {
po = txinmem.TxOut[tx.TxIn[i].Input.Vout]
}
} else {
po, _ = common.BlockChain.Unspent.UnspentGet(&tx.TxIn[i].Input)
}
if po != nil {
ok := script.VerifyTxScript(tx.TxIn[i].ScriptSig, po.Pk_script, i, tx, script.VER_P2SH|script.VER_DERSIG)
if !ok {
w.Write([]byte("<status>Script FAILED</status>"))
} else {
w.Write([]byte("<status>OK</status>"))
}
fmt.Fprint(w, "<value>", po.Value, "</value>")
ads := "???"
if ad := btc.NewAddrFromPkScript(po.Pk_script, common.Testnet); ad != nil {
ads = ad.String()
}
fmt.Fprint(w, "<addr>", ads, "</addr>")
fmt.Fprint(w, "<block>", po.BlockHeight, "</block>")
} else {
w.Write([]byte("<status>UNKNOWN INPUT</status>"))
}
w.Write([]byte("</input>"))
}
w.Write([]byte("</inputs>"))
w.Write([]byte("<outputs>"))
for i := range tx.TxOut {
w.Write([]byte("<output>"))
fmt.Fprint(w, "<value>", tx.TxOut[i].Value, "</value>")
adr := btc.NewAddrFromPkScript(tx.TxOut[i].Pk_script, common.Testnet)
if adr != nil {
fmt.Fprint(w, "<addr>", adr.String(), "</addr>")
} else {
fmt.Fprint(w, "<addr>", "scr:"+hex.EncodeToString(tx.TxOut[i].Pk_script), "</addr>")
}
w.Write([]byte("</output>"))
}
w.Write([]byte("</outputs>"))
} else {
w.Write([]byte("<status>Not found</status>"))
}
w.Write([]byte("</tx>"))
}
开发者ID:liudch,项目名称:gocoin,代码行数:59,代码来源:txs.go
示例5: dec_tx
func dec_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
}
if tx, ok := network.TransactionsToSend[txid.BIdx()]; ok {
s, _, _, _, _ := usif.DecodeTx(tx.Tx)
fmt.Println(s)
} else {
fmt.Println("No such transaction ID in the memory pool.")
}
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:14,代码来源:txcmds.go
示例6: save_tx
func save_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
}
if tx, ok := network.TransactionsToSend[txid.BIdx()]; ok {
fn := tx.Hash.String() + ".tx"
ioutil.WriteFile(fn, tx.Data, 0600)
fmt.Println("Saved to", fn)
} else {
fmt.Println("No such transaction ID in the memory pool.")
}
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:15,代码来源:txcmds.go
示例7: main
func main() {
fmt.Println("Gocoin FetchTx version", gocoin.Version)
if len(os.Args) < 2 {
fmt.Println("Specify transaction id on the command line (MSB).")
return
}
txid := btc.NewUint256FromString(os.Args[1])
rawtx := utils.GetTxFromWeb(txid)
if rawtx == nil {
fmt.Println("Error fetching the transaction")
} else {
ioutil.WriteFile(txid.String()+".tx", rawtx, 0666)
}
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:16,代码来源:fetchtx.go
示例8: parserec
func parserec(vv []interface{}) (ret *testvector) {
ret = new(testvector)
for i, u := range vv[0].([]interface{}) {
switch uu := u.(type) {
case []interface{}:
txid := btc.NewUint256FromString(uu[0].(string))
ret.inps = append(ret.inps, oneinp{txid: txid,
vout: int(uu[1].(float64)), pkscr: uu[2].(string)})
default:
fmt.Printf(" - %d is of a type %T\n", i, uu)
}
}
ret.tx = vv[1].(string)
ret.p2sh = vv[2].(bool)
return
}
开发者ID:vancsj,项目名称:gocoin,代码行数:16,代码来源:tx_test.go
示例9: del_tx
func del_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 _, ok := network.TransactionsToSend[txid.BIdx()]; !ok {
network.TxMutex.Unlock()
fmt.Println("No such transaction ID in the memory pool.")
list_txs("")
return
}
delete(network.TransactionsToSend, txid.BIdx())
network.TxMutex.Unlock()
fmt.Println("Transaction", txid.String(), "removed from the memory pool")
}
开发者ID:liudch,项目名称:gocoin,代码行数:18,代码来源:txcmds.go
示例10: 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
示例11: NewUnspRec
func NewUnspRec(l []byte) (uns *unspRec) {
if l[64] != '-' {
return nil
}
txid := btc.NewUint256FromString(string(l[:64]))
if txid == nil {
return nil
}
rst := strings.SplitN(string(l[65:]), " ", 2)
vout, e := strconv.ParseUint(rst[0], 10, 32)
if e != nil {
return nil
}
uns = new(unspRec)
uns.TxPrevOut.Hash = txid.Hash
uns.TxPrevOut.Vout = uint32(vout)
if len(rst) > 1 {
uns.label = rst[1]
}
if first_determ_idx < len(keys) {
str := string(l)
if sti := strings.Index(str, "_StealthC:"); sti != -1 {
c, e := hex.DecodeString(str[sti+10 : sti+10+64])
if e != nil {
fmt.Println("ERROR at stealth", txid.String(), vout, e.Error())
} else {
// add a new key to the wallet
sec := btc.DeriveNextPrivate(keys[first_determ_idx].Key, c)
rec := btc.NewPrivateAddr(sec, ver_secret(), true) // stealth keys are always compressed
rec.BtcAddr.Extra.Label = uns.label
keys = append(keys, rec)
uns.stealth = true
uns.key = rec
}
}
}
return
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:43,代码来源:unspent.go
示例12: send1_tx
func send1_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.BIdx()]; ok {
network.TxMutex.Unlock()
usif.SendInvToRandomPeer(1, txid)
ptx.Invsentcnt++
fmt.Println("INV for TxID", txid.String(), "sent to a random node")
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:piotrnar,项目名称:gocoin,代码行数:20,代码来源:txcmds.go
示例13: dump_block
func dump_block(s string) {
h := btc.NewUint256FromString(s)
if h == nil {
println("Specify block's hash")
return
}
bl, _, e := common.BlockChain.Blocks.BlockGet(h)
if e != nil {
println(e.Error())
return
}
fn := h.String() + ".bin"
f, e := os.Create(fn)
if e != nil {
println(e.Error())
return
}
f.Write(bl)
f.Close()
fmt.Println("Block saved to file:", fn)
}
开发者ID:vancsj,项目名称:gocoin,代码行数:21,代码来源:textui.go
示例14: dump_block
func dump_block(s string) {
h := btc.NewUint256FromString(s)
if h == nil {
println("Specify block's hash")
return
}
crec, _, er := common.BlockChain.Blocks.BlockGetExt(btc.NewUint256(h.Hash[:]))
if er != nil {
println(er.Error())
return
}
ioutil.WriteFile(h.String()+".bin", crec.Data, 0700)
if crec.Block == nil {
crec.Block, _ = btc.NewBlock(crec.Data)
}
if crec.Block.OldData == nil {
crec.Block.BuildTxList()
}
ioutil.WriteFile(h.String()+".old", crec.Block.OldData, 0700)
fmt.Println("Block saved")
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:23,代码来源:textui.go
示例15: TestSighash
func TestSighash(t *testing.T) {
var arr [][]interface{}
dat, er := ioutil.ReadFile("../test/sighash.json")
if er != nil {
println(er.Error())
return
}
r := bytes.NewBuffer(dat)
d := json.NewDecoder(r)
d.UseNumber()
er = d.Decode(&arr)
if er != nil {
println(er.Error())
return
}
for i := range arr {
if len(arr[i]) == 5 {
tmp, _ := hex.DecodeString(arr[i][0].(string))
tx, _ := btc.NewTx(tmp)
if tx == nil {
t.Error("Cannot decode tx from text number", i)
continue
}
tmp, _ = hex.DecodeString(arr[i][1].(string)) // script
iidx, _ := arr[i][2].(json.Number).Int64()
htype, _ := arr[i][3].(json.Number).Int64()
got := tx.SignatureHash(tmp, int(iidx), int32(htype))
exp := btc.NewUint256FromString(arr[i][4].(string))
if !bytes.Equal(exp.Hash[:], got) {
t.Error("SignatureHash mismatch at index", i)
}
}
}
}
开发者ID:bityuan,项目名称:gocoin,代码行数:37,代码来源:tx_test.go
示例16: host_init
func host_init() {
var e error
BtcRootDir := sys.BitcoinHome()
common.GocoinHomeDir = common.CFG.Datadir + string(os.PathSeparator)
common.Testnet = common.CFG.Testnet // So chaging this value would will only affect the behaviour after restart
if common.CFG.Testnet { // testnet3
common.GenesisBlock = btc.NewUint256FromString("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943")
common.Magic = [4]byte{0x0B, 0x11, 0x09, 0x07}
common.GocoinHomeDir += common.DataSubdir() + string(os.PathSeparator)
BtcRootDir += "testnet3" + string(os.PathSeparator)
common.MaxPeersNeeded = 2000
} else {
common.GenesisBlock = btc.NewUint256FromString("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")
common.Magic = [4]byte{0xF9, 0xBE, 0xB4, 0xD9}
common.GocoinHomeDir += common.DataSubdir() + string(os.PathSeparator)
common.MaxPeersNeeded = 5000
}
// Lock the folder
os.MkdirAll(common.GocoinHomeDir, 0770)
sys.LockDatabaseDir(common.GocoinHomeDir)
fi, e := os.Stat(common.GocoinHomeDir + "blockchain.dat")
if e != nil {
os.RemoveAll(common.GocoinHomeDir)
fmt.Println("You seem to be running Gocoin for the fist time on this PC")
fi, e = os.Stat(BtcRootDir + "blocks/blk00000.dat")
if e == nil && fi.Size() > 1024*1024 {
fmt.Println("There is a database from Satoshi client on your disk...")
if textui.AskYesNo("Do you want to import this database into Gocoin?") {
import_blockchain(BtcRootDir + "blocks")
}
}
}
fmt.Println("Loading UTXO-db and P2SH/P2KH outputs of", btc.UintToBtc(common.AllBalMinVal), "BTC or more")
__exit := make(chan bool)
__done := make(chan bool)
go func() {
for {
select {
case s := <-killchan:
fmt.Println(s)
chain.AbortNow = true
case <-__exit:
__done <- true
return
}
}
}()
ext := &chain.NewChanOpts{NotifyTxAdd: wallet.TxNotifyAdd,
NotifyTxDel: wallet.TxNotifyDel, LoadWalk: wallet.NewUTXO,
UTXOVolatileMode: common.FLAG.VolatileUTXO,
UndoBlocks: common.FLAG.UndoBlocks,
SetBlocksDBCacheSize: true, BlocksDBCacheSize: int(common.CFG.Memory.MaxCachedBlocks)}
sta := time.Now().UnixNano()
common.BlockChain = chain.NewChainExt(common.GocoinHomeDir, common.GenesisBlock, common.FLAG.Rescan, ext)
sto := time.Now().UnixNano()
if chain.AbortNow {
fmt.Printf("Blockchain opening aborted after %.3f seconds\n", float64(sto-sta)/1e9)
common.BlockChain.Close()
sys.UnlockDatabaseDir()
os.Exit(1)
}
al, sy := sys.MemUsed()
fmt.Printf("Blockchain open in %.3f seconds. %d + %d MB of RAM used (%d)\n",
float64(sto-sta)/1e9, al>>20, qdb.ExtraMemoryConsumed>>20, sy>>20)
common.StartTime = time.Now()
__exit <- true
_ = <-__done
}
开发者ID:piotrnar,项目名称:gocoin,代码行数:76,代码来源:init.go
示例17: dl_payment
func dl_payment(w http.ResponseWriter, r *http.Request) {
if !ipchecker(r) {
return
}
var err string
if len(r.Form["outcnt"]) == 1 {
var thisbal chain.AllUnspentTx
var pay_cmd string
var totalinput, spentsofar uint64
var change_addr *btc.BtcAddr
var multisig_input []*wallet.MultisigAddr
addrs_to_msign := make(map[string]bool)
tx := new(btc.Tx)
tx.Version = 1
tx.Lock_time = 0
outcnt, _ := strconv.ParseUint(r.Form["outcnt"][0], 10, 32)
wallet.BalanceMutex.Lock()
for i := 1; i <= int(outcnt); i++ {
is := fmt.Sprint(i)
if len(r.Form["txout"+is]) == 1 && r.Form["txout"+is][0] == "on" {
hash := btc.NewUint256FromString(r.Form["txid"+is][0])
if hash != nil {
vout, er := strconv.ParseUint(r.Form["txvout"+is][0], 10, 32)
if er == nil {
var po = btc.TxPrevOut{Hash: hash.Hash, Vout: uint32(vout)}
for j := range wallet.MyBalance {
if wallet.MyBalance[j].TxPrevOut == po {
thisbal = append(thisbal, wallet.MyBalance[j])
// Add the input to our tx
tin := new(btc.TxIn)
tin.Input = wallet.MyBalance[j].TxPrevOut
tin.Sequence = 0xffffffff
tx.TxIn = append(tx.TxIn, tin)
// Add new multisig address description
_, msi := wallet.IsMultisig(wallet.MyBalance[j].BtcAddr)
multisig_input = append(multisig_input, msi)
if msi != nil {
for ai := range msi.ListOfAddres {
addrs_to_msign[msi.ListOfAddres[ai]] = true
}
}
// Add the value to total input value
totalinput += wallet.MyBalance[j].Value
// If no change specified, use the first input addr as it
if change_addr == nil {
change_addr = wallet.MyBalance[j].BtcAddr
}
}
}
}
}
}
}
wallet.BalanceMutex.Unlock()
for i := 1; ; i++ {
adridx := fmt.Sprint("adr", i)
btcidx := fmt.Sprint("btc", i)
if len(r.Form[adridx]) != 1 || len(r.Form[btcidx]) != 1 {
break
}
if len(r.Form[adridx][0]) > 1 {
addr, er := btc.NewAddrFromString(r.Form[adridx][0])
if er == nil {
am, er := btc.StringToSatoshis(r.Form[btcidx][0])
if er == nil && am > 0 {
if pay_cmd == "" {
pay_cmd = "wallet -useallinputs -send "
} else {
pay_cmd += ","
}
pay_cmd += addr.Enc58str + "=" + btc.UintToBtc(am)
outs, er := btc.NewSpendOutputs(addr, am, common.CFG.Testnet)
if er != nil {
err = er.Error()
goto error
}
tx.TxOut = append(tx.TxOut, outs...)
spentsofar += am
} else {
err = "Incorrect amount (" + r.Form[btcidx][0] + ") for Output #" + fmt.Sprint(i)
goto error
}
} else {
err = "Incorrect address (" + r.Form[adridx][0] + ") for Output #" + fmt.Sprint(i)
goto error
//.........这里部分代码省略.........
开发者ID:liudch,项目名称:gocoin,代码行数:101,代码来源:sendtx.go
示例18: load_balance
// load the content of the "balance/" folder
func load_balance(showbalance bool) {
var unknownInputs, multisigInputs int
f, e := os.Open("balance/unspent.txt")
if e != nil {
println(e.Error())
return
}
rd := bufio.NewReader(f)
for {
l, _, e := rd.ReadLine()
if len(l) == 0 && e != nil {
break
}
if l[64] == '-' {
txid := btc.NewUint256FromString(string(l[:64]))
rst := strings.SplitN(string(l[65:]), " ", 2)
vout, _ := strconv.ParseUint(rst[0], 10, 32)
uns := new(btc.TxPrevOut)
copy(uns.Hash[:], txid.Hash[:])
uns.Vout = uint32(vout)
lab := ""
if len(rst) > 1 {
lab = rst[1]
}
str := string(l)
if sti := strings.Index(str, "_StealthC:"); sti != -1 {
c, e := hex.DecodeString(str[sti+10 : sti+10+64])
if e != nil {
fmt.Println("ERROR at stealth", txid.String(), vout, e.Error())
} else {
// add a new key to the wallet
sec := btc.DeriveNextPrivate(first_seed[:], c)
is_stealth[len(priv_keys)] = true
priv_keys = append(priv_keys, sec)
labels = append(labels, lab)
pub_key := btc.PublicFromPrivate(sec, true)
publ_addrs = append(publ_addrs, btc.NewAddrFromPubkey(pub_key, AddrVerPubkey()))
compressed_key = append(compressed_key, true) // stealth keys are always compressed
}
}
if _, ok := loadedTxs[txid.Hash]; !ok {
tf, _ := os.Open("balance/" + txid.String() + ".tx")
if tf != nil {
siz, _ := tf.Seek(0, os.SEEK_END)
tf.Seek(0, os.SEEK_SET)
buf := make([]byte, siz)
tf.Read(buf)
tf.Close()
th := btc.Sha2Sum(buf)
if bytes.Equal(th[:], txid.Hash[:]) {
tx, _ := btc.NewTx(buf)
if tx != nil {
loadedTxs[txid.Hash] = tx
} else {
println("transaction is corrupt:", txid.String())
}
} else {
println("transaction file is corrupt:", txid.String())
os.Exit(1)
}
} else {
println("transaction file not found:", txid.String())
os.Exit(1)
}
}
// Sum up all the balance and check if we have private key for this input
uo := UO(uns)
add_it := true
if !btc.IsP2SH(uo.Pk_script) {
fnd := false
for j := range publ_addrs {
if publ_addrs[j].Owns(uo.Pk_script) {
fnd = true
break
}
}
if !fnd {
if *onlvalid {
add_it = false
}
if showbalance {
unknownInputs++
if *verbose {
ss := uns.String()
ss = ss[:8] + "..." + ss[len(ss)-12:]
fmt.Println(ss, "does not belong to your wallet (cannot sign it)")
}
}
}
} else {
if *onlvalid {
add_it = false
}
//.........这里部分代码省略.........
开发者ID:vancsj,项目名称:gocoin,代码行数:101,代码来源:unspent.go
示例19: host_init
func host_init() {
var e error
BtcRootDir := sys.BitcoinHome()
if common.CFG.Datadir == "" {
common.GocoinHomeDir = BtcRootDir + "gocoin" + string(os.PathSeparator)
} else {
common.GocoinHomeDir = common.CFG.Datadir + string(os.PathSeparator)
}
common.Testnet = common.CFG.Testnet // So chaging this value would will only affect the behaviour after restart
if common.CFG.Testnet { // testnet3
common.GenesisBlock = btc.NewUint256FromString("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943")
common.Magic = [4]byte{0x0B, 0x11, 0x09, 0x07}
common.GocoinHomeDir += "tstnet" + string(os.PathSeparator)
BtcRootDir += "testnet3" + string(os.PathSeparator)
network.AlertPubKey, _ = hex.DecodeString("04302390343f91cc401d56d68b123028bf52e5fca1939df127f63c6467cdf9c8e2c14b61104cf817d0b780da337893ecc4aaff1309e536162dabbdb45200ca2b0a")
common.MaxPeersNeeded = 100
} else {
common.GenesisBlock = btc.NewUint256FromString("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")
common.Magic = [4]byte{0xF9, 0xBE, 0xB4, 0xD9}
common.GocoinHomeDir += "btcnet" + string(os.PathSeparator)
network.AlertPubKey, _ = hex.DecodeString("04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284")
common.MaxPeersNeeded = 1000
}
// Lock the folder
os.MkdirAll(common.GocoinHomeDir, 0770)
os.MkdirAll(common.GocoinHomeDir+"wallet", 0770)
sys.LockDatabaseDir(common.GocoinHomeDir)
fi, e := os.Stat(common.GocoinHomeDir + "blockchain.dat")
if e != nil {
os.RemoveAll(common.GocoinHomeDir)
fmt.Println("You seem to be running Gocoin for the fist time on this PC")
fi, e = os.Stat(BtcRootDir + "blocks/blk00000.dat")
if e == nil && fi.Size() > 1024*1024 {
fmt.Println("There is a database from Satoshi client on your disk...")
if textui.AskYesNo("Do you want to import this database into Gocoin?") {
import_blockchain(BtcRootDir + "blocks")
}
}
}
// cache the current balance of all the addresses from the current wallet files
wallet.LoadAllWallets()
fmt.Println("Loading UTXO database while checking balance of", len(wallet.MyWallet.Addrs),
"addresses... (press Ctrl-C to interrupt)")
__exit := make(chan bool)
__done := make(chan bool)
go func() {
for {
select {
case s := <-killchan:
fmt.Println(s)
chain.AbortNow = true
case <-__exit:
__done <- true
return
}
}
}()
ext := &chain.NewChanOpts{NotifyTx: wallet.TxNotify,
NotifyStealthTx: wallet.StealthNotify,
LoadWalk: wallet.NewUTXO, LoadFlush: wallet.DoPendingStealths}
sta := time.Now().UnixNano()
common.BlockChain = chain.NewChainExt(common.GocoinHomeDir, common.GenesisBlock, common.FLAG.Rescan, ext)
sto := time.Now().UnixNano()
if chain.AbortNow {
fmt.Printf("Blockchain opening aborted after %.3f seconds\n", float64(sto-sta)/1e9)
common.BlockChain.Close()
sys.UnlockDatabaseDir()
os.Exit(1)
}
wallet.ChainInitDone()
al, sy := sys.MemUsed()
fmt.Printf("Blockchain open in %.3f seconds. %d + %d MB of RAM used (%d)\n",
float64(sto-sta)/1e9, al>>20, qdb.ExtraMemoryConsumed>>20, sy>>20)
common.StartTime = time.Now()
__exit <- true
_ = <-__done
}
开发者ID:vancsj,项目名称:gocoin,代码行数:86,代码来源:init.go
示例20: 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
注:本文中的github.com/piotrnar/gocoin/lib/btc.NewUint256FromString函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论