github.com/deroproject/derosuite@v2.1.6-1.0.20200307070847-0f2e589c7a2b+incompatible/blockchain/rpcserver/on_getblockhash.go (about)

     1  // Copyright 2017-2018 DERO Project. All rights reserved.
     2  // Use of this source code in any form is governed by RESEARCH license.
     3  // license can be found in the LICENSE file.
     4  // GPG: 0F39 E425 8C65 3947 702A  8234 08B2 0360 A03A 9DE8
     5  //
     6  //
     7  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
     8  // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     9  // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
    10  // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    11  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    12  // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    13  // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    14  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
    15  // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    16  
    17  package rpcserver
    18  
    19  import "fmt"
    20  import "context"
    21  
    22  //import	"log"
    23  //import 	"net/http"
    24  
    25  import "github.com/intel-go/fastjson"
    26  import "github.com/osamingo/jsonrpc"
    27  
    28  import "github.com/deroproject/derosuite/crypto"
    29  
    30  type On_GetBlockHash_Handler struct{}
    31  
    32  func (h On_GetBlockHash_Handler) ServeJSONRPC(c context.Context, params *fastjson.RawMessage) (interface{}, *jsonrpc.Error) {
    33  
    34  	var height [1]uint64
    35  	//var result On_GetBlockHash_Result
    36  	if err := jsonrpc.Unmarshal(params, &height); err != nil {
    37  		return nil, err
    38  	}
    39  
    40  	if height[0] < uint64(chain.Get_Height()) {
    41  		/*hash, err := chain.Load_BL_ID_at_Height(int64(height[0]))
    42  		if err == nil {
    43  			result := fmt.Sprintf("%s", hash)
    44  			return result, nil
    45  		} else */{
    46  			logger.Warnf("NOT possible, Could not find block at height %d Chain height %d\n", height[0], chain.Get_Height())
    47  		}
    48  	} else { // we must return 0
    49  		var hash crypto.Hash
    50  		result := fmt.Sprintf("%s", hash)
    51  		return result, nil
    52  
    53  	}
    54  
    55  	// if we reach here some error is here
    56  	return nil, jsonrpc.ErrInvalidParams()
    57  }