Beispiel #1
0
func HandleCommitChain(ctx *web.Context) {
	state := ctx.Server.Env["state"].(interfaces.IState)

	type commitchain struct {
		CommitChainMsg string
	}

	c := new(commitchain)
	if p, err := ioutil.ReadAll(ctx.Request.Body); err != nil {
		returnMsg(ctx, "Bad commit message", false)
		return
	} else {
		if err := json.Unmarshal(p, c); err != nil {
			returnMsg(ctx, "Bad commit message", false)
			return
		}
	}

	commit := entryCreditBlock.NewCommitChain()
	if p, err := hex.DecodeString(c.CommitChainMsg); err != nil {
		returnMsg(ctx, "Bad commit message", false)
		return
	} else {
		_, err := commit.UnmarshalBinaryData(p)
		if err != nil {
			returnMsg(ctx, "Bad commit message", false)
			return
		}
	}

	msg := new(messages.CommitChainMsg)
	msg.CommitChain = commit
	msg.Timestamp = state.GetTimestamp()
	state.InMsgQueue() <- msg

	returnMsg(ctx, "Chain Commit Success", true)
}