Go-Ethereum

如何在私有網路中測量時間並控制挖礦過程?

  • August 2, 2017

我正在使用帶有 geth 1.7 的專用網路,並且有一些問題

1-為了獲得執行函式的時間,我發現了一些關於使用 Data.getTime() 的討論,但我想知道是否有人能夠成功實現其他方法,例如 performance.now() 來測量 geth 命令行中的時間? 我試過但似乎沒有定義函式!

2-如果我知道塊號,如何獲取特定塊的時間戳?

3- 我怎樣才能只開採一個街區。例如,我向私有網路發送一筆交易,然後只探勘一個包含該交易的區塊。我在這裡發現一些建議使用 while 循環來檢查是否沒有待處理的事務,然後停止探勘。但我不想要這種方法,我寧願只開採一個區塊。

提前致謝,

1:可以通過更新jsre.go文件中的source來獲取函式的執行時間,如下:

func (self *JSRE) Evaluate(code string, w io.Writer) error {
   var fail error

   self.Do(func(vm *otto.Otto) {
       var startTime = time.Now();
       fmt.Println("jsre function ",code," start")
       val, err := vm.Run(code)
       if err != nil {
           prettyError(vm, err, w)
       } else {
           prettyPrint(vm, val, w)
       }
       fmt.Fprintln(w)
       fmt.Println("jsre function ",code," end ,consume time " ,(time.Now().UnixNano() - startTime.UnixNano()))
   })
   return fail
}

然後,部署合約進行測試。

2:無法通過數字獲取區塊時間戳,block.timestamp或者now只是目前區塊時間戳為自 Unix 紀元以來的秒數。

3:miner.start(1);admin.sleepBlocks(1);miner.stop();只挖一個街區然後會停止我的。請注意一起執行。

引用自:https://ethereum.stackexchange.com/questions/23550