In Sway, logging is an essential feature that allows smart contracts to record information during their execution. These logs can be used for debugging, auditing, or monitoring the behavior of smart contracts.
In the provided code, we define a smart contract named MyContract with a function called test_func that accepts a string of length 4 as a parameter.
use statement to import the std::logging module, which provides logging functionality.test_func function, we call the log function and pass the incoming string as the log message.The test_func function of this smart contract will record the incoming string as a log message when executed. This simple example is intended to show you how to use logging in Sway to record the behavior of smart contracts. We hope this tutorial helps you better understand the logging feature in Sway.
contract;
use std::{
hash::Hash,
auth::msg_sender
};
// StorageMap
// - basic (insert, read, update, remove)
// - nested
abi MyContract {
#[storage(read, write)]
fn basic_examples();
#[storage(read, write)]
fn nested_examples();
}
storage {
balance_of: StorageMap = StorageMap {},
allowance: StorageMap<(Identity, Identity), u64> = StorageMap {},
}
const ADDR: b256 = 0x1000000000000000000000000000000000000000000000000000000000000000;
impl MyContract for Contract {
#[storage(read, write)]
fn basic_examples() {
let sender = msg_sender().unwrap();
// Insert
storage.balance_of.insert(sender, 123);
// Read
let bal = storage.balance_of.get(sender).try_read().unwrap_or(0);
// Update
storage.balance_of.insert(sender, bal + 1);
// Remove
storage.balance_of.remove(sender);
}
#[storage(read, write)]
fn nested_examples() {
let sender = msg_sender().unwrap();
let spender = Identity::Address(Address::from(ADDR));
// Read
let val = storage.allowance.get((sender, spender)).try_read().unwrap_or(0);
// Insert / update
storage.allowance.insert((sender, spender), val + 1);
// Remove
storage.allowance.remove((sender, spender));
}
}