Files
hardhat-simple-storage/contracts/SimpleStorage.sol
2024-08-03 00:08:10 +08:00

66 lines
1.7 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;
contract SimpleStorage {
// boolean, uint, int, address, bytes
address public myAddress = 0xc9445E993dAeA4bA3F1FE1080F0F6f8c46b4d967;
uint256 public myNumber = 123; // With Getter, Retrieval Need Gas
string myText = "Hello World";
//int256 favoriteInt = -5;
//bytes32 favoriteBytes = "cat";
uint256 myDefaultZero; // Initialize default to 0
// Paid
function storeMyNumber(uint256 _favoriteNumber) public virtual {
myNumber = _favoriteNumber;
//retrieve();
}
/*
view - for retrieve variable data (Free)
pure - for calculation (Free)
Free function will cost $ if call in Paid function
*/
function viewMyNumber() public view returns (uint256) {
return myNumber;
}
function pureCalculation() public pure returns (uint256) {
return ((1 + 555) * 22) / 88;
}
// Custom People Object
struct People {
uint256 favoriteNumber;
string name;
}
People public personJohn = People({favoriteNumber: 2, name: "John"});
// Array Variable
People[] public people;
function addNewPerson2(
string memory _name,
uint256 _favoriteNumber
) public {
//People memory newPerson = People(_favoriteNumber, _name);
people.push(People(_favoriteNumber, _name));
nameToFavoriteNumber[_name] = _favoriteNumber;
}
/*
calldata - tmp data cannot modify
memory - tmp dta can modify
storage - permanent data can modify
*/
// Mapping - Easy to find data (Like Java HashMap)
mapping(string => uint256) public nameToFavoriteNumber;
/*
EVM, Ethereum Virtual Machine
Avalanche, Fantom, Polygon
*/
}