in chaincode/src/bank/deposit.go [30:63]
func (s *BankChaincode) deposit(stub shim.ChaincodeStubInterface, args []string) sc.Response {
accNum := args[0]
amount, err := decimal.NewFromString(args[1])
if err != nil {
return shim.Error("Second argument (Amount to deposit) must be a number. Error: " + err.Error())
}
if amount.LessThanOrEqual(decimal.NewFromFloat(0.0)) {
return shim.Error("Second argument (Amount to deposit) must be a positive number")
}
//get the account to operate on
accountAsByes := s.queryAccount(stub, []string{accNum}).Payload
acc := &account{}
err = json.Unmarshal(accountAsByes, acc)
if err != nil {
return shim.Error("Unable to retrieve to account ID from ledger " + err.Error())
}
acc.Balance = acc.Balance.Add(amount)
// write changes to ledger
accAsBytes, _ := json.Marshal(acc)
err = stub.PutState(acc.AccNumber, accAsBytes)
if err != nil {
return shim.Error("Error trying to commit account to ledger" + err.Error())
}
return (shim.Success(nil))
}