Last active
November 17, 2023 21:47
-
-
Save Jesserc/2876350a667d6222230442a0ee2fc289 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
import "contracts/1_Storage.sol"; | |
contract Example { | |
// DATA-TYPES | |
/* | |
strings, boolean, integers (uint8,16,24,32,40,48,56,64,72,80,88,96,104,...256, int8,int16...int256), bytes1,2,3,4,5,6...32 (value types) and then bytes(reference type), address, arrays, structs, enums, mappings | |
uint8 - 2**8 -1 | |
uint16 => 2**16 -1 | |
... | |
uint256 => 2**256 -1 == 256 bits | |
if uint8 can hold 0-255 => 2**8 -1 | |
then int8 can hold positive numbers from 0-(255/2) | |
then the rest is the for negative number -1-(-128) | |
*/ | |
// VALUE TYPES | |
bool public condition; | |
bool public status = true; | |
// integers (decimals) (uint - ONLY positive integers/numbers, int - negative & positive integers/numbers) | |
uint16 public integer; | |
// uint8; | |
uint number = 115792089237316195423570985008687907853269984665640564039457584007913129639935; | |
// uint num2 = -2; // does not work | |
int negativeNumber = -20; | |
int positiveNumber = 20; | |
// addresses | |
address public myAddress; // 20 bytes - 40 hex characters // hex are 0-9,a-f base16 | |
bytes1 public v0; | |
bytes2 private v1 = 0xaf6f; | |
bytes3 v2 = 0xb0bef3; | |
bytes4 v3 = 0xb0bef354; | |
bytes5 v4 = 0xb0bef3540f; | |
bytes6 v5 = 0xb0bef3540f44; | |
bytes7 v6 = 0xb0bef3540f44ff; | |
//...bytes32 | |
// REFERENCE TYPES | |
// Strings | |
// string name; | |
string public name = "Jesserc"; | |
bytes data = hex"608060405260015f60016101000a81548160ff021916908315150217905550600a6002557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6003556014600455735b38da6a701c568545dcfcb03fcb875f56beddc460055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f4a65737365726300000000000000000000000000000000000000000000000000815250600690816100e49190610330565b503480156100f0575f80fd5b506103ff565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061017157607f821691505b6020821081036101845761018361012d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101ab565b6101f086836101ab565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61023461022f61022a84610208565b610211565b610208565b9050919050565b5f819050919050565b61024d8361021a565b6102616102598261023b565b8484546101b7565b825550505050565b5f90565b610275610269565b610280818484610244565b505050565b5b818110156102a3576102985f8261026d565b600181019050610286565b5050565b601f8211156102e8576102b98161018a565b6102c28461019c565b810160208510156102d1578190505b6102e56102dd8561019c565b830182610285565b50505b505050565b5f82821c905092915050565b5f6103085f19846008026102ed565b1980831691505092915050565b5f61032083836102f9565b9150826002028217905092915050565b610339826100f6565b67ffffffffffffffff81111561035257610351610100565b5b61035c825461015a565b6103678282856102a7565b5f60209050601f831160018114610398575f8415610386578287015190505b6103908582610315565b8655506103f7565b601f1984166103a68661018a565b5f5b828110156103cd578489015182556001820191506020850194506020810190506103a8565b868310156103ea57848901516103e6601f8916826102f9565b8355505b6001600288020188555050505b505050505050565b603e8061040b5f395ff3fe60806040525f80fdfea26469706673582212203d2b8fa626d74f633beb6a52859a3f42404e033fe939ebaa8c3224ddde23157b64736f6c63430008160033"; | |
// Arrays | |
// can be made with different value data-types | |
// you must specify the type of array | |
bool[5] statuses = [true, false, true, true, true]; | |
uint8[15] OnlyPosNumbers = [1,2,3,4,5,255,255,255,255,255,255]; | |
int16[] negAndPosNumbers = [-12839,29,29990]; | |
address[] addressList = [0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2]; | |
// Structs | |
// making our own type of a mix of different datatypes | |
// | |
struct Person { | |
string name; | |
uint8 age; | |
} | |
Person public person; // actual variable | |
// Person person = Person("j",10); | |
// Enums - enumerations | |
enum FoodStatus {Eaten, NotEaten} | |
FoodStatus foodStatus = FoodStatus.NotEaten; | |
// MAPPINGS | |
// num[0]; // 1 | |
// nameOfMapping[firstItemOfTheMapping];// return the corresponding second item of the mapping | |
// 1 dimensional mapping | |
mapping(address => uint224) public balance; | |
// balance[0x5B38Da6a701c568545dCfcB03FcB875f56beddC4]// return uint224 number | |
// 2 dimensional mapping | |
mapping(string => mapping(string => uint128)) public carDetails; | |
// carDetails["BMW"]["XYZ"]// return uint128 number | |
function update() external { | |
addressList.push(0x5B38Da6a701c568545dCfcB03FcB875f56beddC4); | |
statuses[0] = false; | |
balance[0x5B38Da6a701c568545dCfcB03FcB875f56beddC4] = 10; | |
person = Person({ | |
name: "j", | |
age: 10 | |
}); // actual variable | |
person.age = 255; | |
person.name = "Emma"; | |
// local | |
bytes7 nnnn = 0xb0bef3540f44ff; | |
balance[0x5B38Da6a701c568545dCfcB03FcB875f56beddC4] = 10000; | |
carDetails["BMW"]["XYZ"] = 2023; | |
} | |
// function name(params) { | |
// uint a = 10; local var | |
// code | |
// } | |
} | |
/* | |
Basic file structure of smart contracts | |
*/ | |
// high level language (solidity) -> low level language (bytecode) | |
/* | |
An example of a bytecode, generated from a solidity high level code | |
608060405260015f60016101000a81548160ff021916908315150217905550600a6002557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6003556014600455735b38da6a701c568545dcfcb03fcb875f56beddc460055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f4a65737365726300000000000000000000000000000000000000000000000000815250600690816100e49190610330565b503480156100f0575f80fd5b506103ff565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061017157607f821691505b6020821081036101845761018361012d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101ab565b6101f086836101ab565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61023461022f61022a84610208565b610211565b610208565b9050919050565b5f819050919050565b61024d8361021a565b6102616102598261023b565b8484546101b7565b825550505050565b5f90565b610275610269565b610280818484610244565b505050565b5b818110156102a3576102985f8261026d565b600181019050610286565b5050565b601f8211156102e8576102b98161018a565b6102c28461019c565b810160208510156102d1578190505b6102e56102dd8561019c565b830182610285565b50505b505050565b5f82821c905092915050565b5f6103085f19846008026102ed565b1980831691505092915050565b5f61032083836102f9565b9150826002028217905092915050565b610339826100f6565b67ffffffffffffffff81111561035257610351610100565b5b61035c825461015a565b6103678282856102a7565b5f60209050601f831160018114610398575f8415610386578287015190505b6103908582610315565b8655506103f7565b601f1984166103a68661018a565b5f5b828110156103cd578489015182556001820191506020850194506020810190506103a8565b868310156103ea57848901516103e6601f8916826102f9565b8355505b6001600288020188555050505b505050505050565b603e8061040b5f395ff3fe60806040525f80fdfea26469706673582212203d2b8fa626d74f633beb6a52859a3f42404e033fe939ebaa8c3224ddde23157b64736f6c63430008160033 | |
Bytecode (compiled smart contracts) runs on the Ethereum virtual machine (EVM). | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment