m.Handle("/", alwaysError(errors.New("not Found")))
m.Handle("/error", jsonHandler(a.walletError))
- m.Handle("/net-info", jsonHandler(a.getNetInfo))
-
m.Handle("/create-access-token", jsonHandler(a.createAccessToken))
m.Handle("/list-access-tokens", jsonHandler(a.listAccessTokens))
m.Handle("/delete-access-token", jsonHandler(a.deleteAccessToken))
m.Handle("/get-block-header", jsonHandler(a.getBlockHeader))
m.Handle("/get-block", jsonHandler(a.getBlock))
m.Handle("/get-block-count", jsonHandler(a.getBlockCount))
+ m.Handle("/get-difficulty", jsonHandler(a.getDifficulty))
+ m.Handle("/get-hash-rate", jsonHandler(a.getHashRate))
m.Handle("/is-mining", jsonHandler(a.isMining))
- m.Handle("/gas-rate", jsonHandler(a.gasRate))
+ m.Handle("/set-mining", jsonHandler(a.setMining))
+
m.Handle("/get-work", jsonHandler(a.getWork))
m.Handle("/submit-work", jsonHandler(a.submitWork))
- m.Handle("/set-mining", jsonHandler(a.setMining))
+
+ m.Handle("/gas-rate", jsonHandler(a.gasRate))
+ m.Handle("/net-info", jsonHandler(a.getNetInfo))
handler := latencyHandler(m, walletEnable)
handler = maxBytesHandler(handler) // TODO(tessr): consider moving this to non-core specific mux
}
return NewSuccessResponse(resp)
}
+
+// GetDifficultyResp is resp struct for getDifficulty API
+type GetDifficultyResp struct {
+ BlockHash *bc.Hash `json:"hash"`
+ Bits uint64 `json:"bits"`
+ Difficulty string `json:"difficulty"`
+}
+
+func (a *API) getDifficulty() Response {
+ hash := a.chain.BestBlockHash()
+ block, err := a.chain.GetBlockByHash(hash)
+ if err != nil {
+ return NewErrorResponse(err)
+ }
+
+ resp := &GetDifficultyResp{
+ BlockHash: hash,
+ Bits: block.Bits,
+ Difficulty: difficulty.CompactToBig(block.Bits).String(),
+ }
+ return NewSuccessResponse(resp)
+}
+
+// getHashRateResp is resp struct for getHashRate API
+type getHashRateResp struct {
+ BlockHash *bc.Hash `json:"hash"`
+ Nonce uint64 `json:"nonce"`
+}
+
+func (a *API) getHashRate() Response {
+ hash := a.chain.BestBlockHash()
+ block, err := a.chain.GetBlockByHash(hash)
+ if err != nil {
+ return NewErrorResponse(err)
+ }
+
+ resp := &getHashRateResp{
+ BlockHash: hash,
+ Nonce: block.Nonce,
+ }
+ return NewSuccessResponse(resp)
+}
printJSON(data)
},
}
+
+var getDifficultyCmd = &cobra.Command{
+ Use: "get-difficulty",
+ Short: "Get the difficulty of most recent block",
+ Args: cobra.NoArgs,
+ Run: func(cmd *cobra.Command, args []string) {
+ data, exitCode := util.ClientCall("/get-difficulty")
+ if exitCode != util.Success {
+ os.Exit(exitCode)
+ }
+ printJSON(data)
+ },
+}
+
+var getHashRateCmd = &cobra.Command{
+ Use: "get-hash-rate",
+ Short: "Get the nonce of most recent block",
+ Args: cobra.NoArgs,
+ Run: func(cmd *cobra.Command, args []string) {
+ data, exitCode := util.ClientCall("/get-hash-rate")
+ if exitCode != util.Success {
+ os.Exit(exitCode)
+ }
+ printJSON(data)
+ },
+}
BytomcliCmd.AddCommand(getBlockHashCmd)
BytomcliCmd.AddCommand(getBlockCmd)
BytomcliCmd.AddCommand(getBlockHeaderCmd)
+ BytomcliCmd.AddCommand(getDifficultyCmd)
+ BytomcliCmd.AddCommand(getHashRateCmd)
BytomcliCmd.AddCommand(createKeyCmd)
BytomcliCmd.AddCommand(deleteKeyCmd)