Let's create and interact with the basic smart contract. Create a new solidity file called NumberStorage.sol and fill it with the contract below:
// SPDX-License-Identifier: MIT  
pragma  solidity  ^0.8.0 ;  
  
contract  NumberStorage  {  
   
    uint256  num ;  
    
    function  getNum ()  public  view  returns ( uint )  {  
        return  num ;    
    }  
    
    function  setNum ( uint  _num )  public  {  
        num  =  _num ;  
    }  
    
}  
Now let's deploy it:
forge  create  --rpc-url  local-c  --private-key  $PK  src/my-contracts/NumberStorage.sol:NumberStorage  --broadcast  
The result should look something like this:
[ ⠒ ]  Compiling...  
[ ⠢ ]  Compiling 1 files with 0.8.18  
[ ⠆ ]  Solc 0.8.18 finished in 14.67ms  
Compiler  run  successful!  
Deployer:  0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC  
Deployed  to:  0x17aB05351fC94a1a67Bf3f56DdbB941aE6c63E25  
Transaction  hash:  0x5717e501e12f40d644c60030bc0ab9569ddb9f4cba968546ab597fb516eae09b  
Next, let's store a number:
cast  send  --rpc-url  local-c  --private-key  $PK  0x17aB05351fC94a1a67Bf3f56DdbB941aE6c63E25  "setNum(uint)"  42  
Since we are now writing to and not just reading from the blockchain we will see the transaction details:
blockHash                0x02eb13d317a43976ea8ba21a76e5deb6d02d257a0b98c1a84734e0609b8a6fec  
blockNumber              3  
contractAddress            
cumulativeGasUsed        43516  
effectiveGasPrice        28000000000  
from                     0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC  
gasUsed                  43516  
logs                     []  
logsBloom                0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  
root                       
status                   1  
transactionHash          0xd382101a4955f05f8a96e4ab4b62457700697930dc6ed84246a346e51d41d3cb  
transactionIndex         0  
type                     2  
to                       0x17aB05351fC94a1a67Bf3f56DdbB941aE6c63E25  
Next, let's get the number from the storage:
cast  call  --rpc-url  local-c  0x17aB05351fC94a1a67Bf3f56DdbB941aE6c63E25  "getNum()(uint)"  
As a result we should get the number we have stored earlier:
@martineckardt  ➜  /workspaces/avalanche-starter-kit  (main) $ cast call --rpc-url local-c 0x17aB05351fC94a1a67Bf3f56DdbB941aE6c63E25  "getNum()(uint)"  
42