Skip to content

Commit

Permalink
Added wait time for transaction verification
Browse files Browse the repository at this point in the history
  • Loading branch information
Kenwes13 committed Jun 19, 2019
1 parent d67a3d1 commit a1fe33f
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 45 deletions.
4 changes: 1 addition & 3 deletions core/version/version.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@

//====== THIS IS AUTOGENERATED FILE. DO NOT MODIFY ========

package version
var VERSIONSTR = "1.0.5"


const VERSIONSTR = "1.0.6"
48 changes: 20 additions & 28 deletions zcncore/sample/0Wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (
)

type StatusUI struct {
i int
wg sync.WaitGroup
i int
wg sync.WaitGroup
txnout map[string]json.RawMessage
}

Expand All @@ -29,36 +29,28 @@ type StatusUI struct {

const ChainConfig = `{
"miners": [
"http://m000.ruby.alphanet-0chain.net:7071",
"http://m001.ruby.alphanet-0chain.net:7071",
"http://m002.ruby.alphanet-0chain.net:7071",
"http://m003.ruby.alphanet-0chain.net:7071",
"http://m004.ruby.alphanet-0chain.net:7071",
"http://m005.ruby.alphanet-0chain.net:7071",
"http://m006.ruby.alphanet-0chain.net:7071",
"http://m007.ruby.alphanet-0chain.net:7071",
"http://m008.ruby.alphanet-0chain.net:7071",
"http://m009.ruby.alphanet-0chain.net:7071"
"http://ohio.devi.testnet-0chain.net:7071",
"http://ohio.devi.testnet-0chain.net:7072",
"http://ohio.devi.testnet-0chain.net:7073",
"http://ohio.devi.testnet-0chain.net:7074"
],
"sharders": [
"http://s000.ruby.alphanet-0chain.net:7171",
"http://s001.ruby.alphanet-0chain.net:7171",
"http://s002.ruby.alphanet-0chain.net:7171",
"http://s003.ruby.alphanet-0chain.net:7171"
"http://ohio.devi.testnet-0chain.net:7171"
],
"signaturescheme": "ed25519"
"signaturescheme": "bls0chain"
}`

var wallet = `
{"client_id":"fdb9fef8c6c2e74bce76ed345ad413280ccb32f3f2a6de6894d019ac82fbfb07",
"client_key":"2221f1db1dd4c1d6f754f6681318db97cad11a15a2bc80256998926a19bcc7c5",
{"client_id":"0bc96a0980170045863d826f9eb579d8144013210602e88426408e9f83c236f6",
"client_key":"a4e58c66b072d27288b650db9a476fe66a1a4f69e0f8fb11499f9ec3a579e21e5dc0298b8c5ae5baa205730d06bc04b07a31943ab3bd620e8427c15d5c413b9e",
"keys":[
{
"public_key":"2221f1db1dd4c1d6f754f6681318db97cad11a15a2bc80256998926a19bcc7c5",
"private_key":"63c1fae5d79529c2ed4e0c476bea054bc6108af47012cc8916a788810522bbbb2221f1db1dd4c1d6f754f6681318db97cad11a15a2bc80256998926a19bcc7c5"
"public_key":"a4e58c66b072d27288b650db9a476fe66a1a4f69e0f8fb11499f9ec3a579e21e5dc0298b8c5ae5baa205730d06bc04b07a31943ab3bd620e8427c15d5c413b9e",
"private_key":"c0f3a3100241888ea9c2cc5c7300e3e510a8e7190c2c20b03f80e3937a91530d"
}],
"mnemonics":"zebra title path glory work nest admit invite tornado actress actor consider squeeze season wet elbow loop educate moment number crunch brick buzz umbrella",
"mnemonics":"snake mixed bird cream cotton trouble small fee finger catalog measure spoon private second canal pact unable close predict dream mask delay path inflict",
"version":"1.0",
"date_created":"2019-05-13 22:56:35.317831 -0700 PDT m=+0.005299071"}`
"date_created":"2019-06-19 13:37:50.466889 -0700 PDT m=+0.023873276"}`

func (s *StatusUI) OnWalletCreateComplete(status int, w string, err string) {
defer s.wg.Done()
Expand All @@ -83,9 +75,9 @@ func (s *StatusUI) OnVerifyComplete(t *zcncore.Transaction, status int) {

func (s *StatusUI) OnBalanceAvailable(status int, value int64) {
defer s.wg.Done()
fmt.Println("=========== Balance Status:", status, "Value:", value,
"Token:", zcncore.ConvertToToken(value),
"Value:", zcncore.ConvertToValue(zcncore.ConvertToToken(value)))
fmt.Println("=========== Balance Status:", status, "Value:", value,
"Token:", zcncore.ConvertToToken(value),
"Value:", zcncore.ConvertToValue(zcncore.ConvertToToken(value)))
}

func main() {
Expand All @@ -100,7 +92,7 @@ func main() {

var txnhash string
flag.StringVar(&txnhash, "txnhash", "", "Transaction hash to verify.\nMandatory for -cmd verify")

var txndata string
flag.StringVar(&txndata, "txndata", "", "Data to store.\nMandatory for -cmd store")

Expand Down Expand Up @@ -242,4 +234,4 @@ func main() {
txn.Verify()
s.wg.Wait()
}
}
}
3 changes: 0 additions & 3 deletions zcncore/sample/go.mod

This file was deleted.

70 changes: 59 additions & 11 deletions zcncore/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package zcncore
import (
"encoding/json"
"fmt"
"net/http"
"time"
"github.com/0chain/gosdk/core/transaction"
"github.com/0chain/gosdk/core/util"
"github.com/0chain/gosdk/core/zcncrypto"
"net/http"
"time"
)

// TransactionCallback needs to be implemented by the caller for transaction related APIs
Expand Down Expand Up @@ -270,16 +270,64 @@ func (t *Transaction) Verify() error {
defer close(result)
for _, sharder := range _config.chain.Sharders {
go func(sharderurl string) {
Logger.Info("Verify transaction hash", t.txnHash, "from", sharderurl)
Logger.Info("Verify transaction hash: ", t.txnHash, " from", sharderurl)
url := fmt.Sprintf("%v%v%v", sharderurl, TXN_VERIFY_URL, t.txnHash)
req, err := util.NewHTTPGetRequest(url)
if err != nil {
Logger.Error(sharderurl, "new get request failed. ", err.Error())
return
}
res, err := req.Get()
if err != nil {
Logger.Error(sharderurl, "get error. ", err.Error())
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
var res *util.GetResponse
done := make(chan bool)
go func() {
lburl := fmt.Sprintf("%v%v", sharderurl, LATEST_FINALIZED_BLOCK)
ticker := time.NewTicker(time.Second)
for true {
select {
case <-ticker.C:
req, err := util.NewHTTPGetRequest(lburl)
if err != nil {
Logger.Error(sharderurl, "new get request failed. ", err.Error())
}
res, err = req.Get()
if err != nil {
Logger.Error(sharderurl, "get error. ", err.Error())
}
var objmap map[string]json.RawMessage
err = json.Unmarshal([]byte(res.Body), &objmap)
if err != nil {
Logger.Debug("error getting latest finalized block: ", err)
break
}
if date, ok := objmap["creation_date"]; ok {
var dateTimeStamp int64
err = json.Unmarshal(date, &dateTimeStamp)
if dateTimeStamp-t.txn.CreationDate > 10 {
done <- true
return
}
}
}
}
}()
accepted := false
for !accepted {
select {
case <-done:
accepted = true
case <-ticker.C:
req, err := util.NewHTTPGetRequest(url)
if err != nil {
Logger.Error(sharderurl, "new get request failed. ", err.Error())
}
res, err = req.Get()
if err != nil {
Logger.Error(sharderurl, "get error. ", err.Error())
}
var objmap map[string]json.RawMessage
err = json.Unmarshal([]byte(res.Body), &objmap)
if err != nil {
continue
}
_, accepted = objmap["version"]
}
}
result <- res
return
Expand Down
1 change: 1 addition & 0 deletions zcncore/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ type ChainConfig struct {
var defaultLogLevel = logger.DEBUG
var Logger logger.Logger

var LATEST_FINALIZED_BLOCK = `/v1/block/get/latest_finalized`
var REGISTER_CLIENT = `/v1/client/put`
var PUT_TRANSACTION = `/v1/transaction/put`
var TXN_VERIFY_URL = `/v1/transaction/get/confirmation?hash=`
Expand Down

0 comments on commit a1fe33f

Please sign in to comment.