本文整理汇总了Golang中github.com/piotrnar/gocoin/lib/btc.NewUint256FromString函数的典型用法代码示例。如果您正苦于以下问题:Golang NewUint256FromString函数的具体用法?Golang NewUint256FromString怎么用?Golang NewUint256FromString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewUint256FromString函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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")
}
}
示例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()
}
示例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
}
示例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>"))
}
示例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.")
}
}
示例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.")
}
}
示例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)
}
}
示例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
}
示例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")
}
示例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")
}
示例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
}
示例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("")
}
}
示例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)
}
示例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")
}
示例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)
}
}
}
}