Add Chaincode Events to Transfer and Approve (#369)

FAB-18275

Signed-off-by: Julian Castrence <juliancastrence@ibm.com>

Co-authored-by: Julian Castrence <juliancastrence@ibm.com>
This commit is contained in:
Julian Castrence 2020-11-12 12:44:17 -05:00 committed by GitHub
parent 79485c5bab
commit d3bc97fae2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,6 +1,7 @@
package chaincode
import (
"encoding/json"
"fmt"
"log"
"strconv"
@ -101,6 +102,17 @@ func (s *SmartContract) Transfer(ctx contractapi.TransactionContextInterface, re
return fmt.Errorf("failed to transfer: %v", err)
}
// Emit the Transfer event
transferEvent := map[string]string{"from": clientID, "to": recipient, "value": strconv.Itoa(amount)}
transferEventJSON, err := json.Marshal(transferEvent)
if err != nil {
return fmt.Errorf("failed to obtain JSON encoding: %v", err)
}
err = ctx.GetStub().SetEvent("Transfer", transferEventJSON)
if err != nil {
return fmt.Errorf("event failed to register: %v", err)
}
return nil
}
@ -200,6 +212,17 @@ func (s *SmartContract) Approve(ctx contractapi.TransactionContextInterface, spe
return fmt.Errorf("failed to update state of smart contract for key %s: %v", allowanceKey, err)
}
// Emit the Approval event
approvalEvent := map[string]string{"owner": owner, "spender": spender, "value": strconv.Itoa(value)}
approvalEventJSON, err := json.Marshal(approvalEvent)
if err != nil {
return fmt.Errorf("failed to obtain JSON encoding: %v", err)
}
err = ctx.GetStub().SetEvent("Approval", approvalEventJSON)
if err != nil {
return fmt.Errorf("event failed to register: %v", err)
}
log.Printf("client %s approved a withdrawal allowance of %d for spender %s", owner, value, spender)
return nil