MCPcopy
hub / github.com/yeasy/blockchain_guide / IssueCoinToCompany

Method IssueCoinToCompany

11_app_dev/chaincode_example03.go:144–176  ·  view source on GitHub ↗

IssueCoinToCompany transfers currency from a bank to a company.

(ctx contractapi.TransactionContextInterface, bankID string, companyID string, amount string)

Source from the content-addressed store, hash-verified

142
143// IssueCoinToCompany transfers currency from a bank to a company.
144func (s *SmartContract) IssueCoinToCompany(ctx contractapi.TransactionContextInterface, bankID string, companyID string, amount string) (*Transaction, error) {
145 fromID, err := strconv.Atoi(bankID)
146 if err != nil {
147 return nil, fmt.Errorf("bank id must be an integer: %w", err)
148 }
149 toID, value, err := parseIDAndAmount(companyID, amount)
150 if err != nil {
151 return nil, err
152 }
153
154 bank, err := readBank(ctx, fromID)
155 if err != nil {
156 return nil, err
157 }
158 if bank.RestNumber < value {
159 return nil, fmt.Errorf("bank %d balance is insufficient", fromID)
160 }
161 company, err := readCompany(ctx, toID)
162 if err != nil {
163 return nil, err
164 }
165
166 bank.RestNumber -= value
167 company.Number += value
168
169 if err := putJSON(ctx, bankKey(fromID), bank); err != nil {
170 return nil, err
171 }
172 if err := putJSON(ctx, companyKey(toID), company); err != nil {
173 return nil, err
174 }
175 return recordTransaction(ctx, 1, fromID, 2, toID, value)
176}
177
178// Transfer moves currency between companies.
179func (s *SmartContract) Transfer(ctx contractapi.TransactionContextInterface, fromCompanyID string, toCompanyID string, amount string) (*Transaction, error) {

Callers

nothing calls this directly

Calls 7

parseIDAndAmountFunction · 0.85
readBankFunction · 0.85
readCompanyFunction · 0.85
bankKeyFunction · 0.85
companyKeyFunction · 0.85
recordTransactionFunction · 0.85
putJSONFunction · 0.70

Tested by

no test coverage detected