Skip to content

Instantly share code, notes, and snippets.

View mjtbkh's full-sized avatar
Cryptography, blockchain and web apps

Mojtaba Khodami mjtbkh

Cryptography, blockchain and web apps
View GitHub Profile
gid:pm8Wy9awdtLR77Ges8yCg3
@mjtbkh
mjtbkh / MyERC1155NFT.sol
Last active March 26, 2022 07:14
A simple implementation of ERC1155 to make an NFT collection!
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol";
import "https://github.com/OpenZeppelin/Openzeppelin-contracts/blob/master/contracts/utils/Strings.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol";
contract MyNftCollection is ERC1155, Ownable {
string private _uri;
@mjtbkh
mjtbkh / SimpleStorageV1.sol
Created January 31, 2022 17:13
A simple UUPS upgradeable smart-contract
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "@openzeppelin/contracts-upgradeable@4.4.2/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable@4.4.2/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable@4.4.2/proxy/utils/UUPSUpgradeable.sol";
contract SimpleStorageV1 is Initializable, OwnableUpgradeable, UUPSUpgradeable {
function initialize() initializer public {
@mjtbkh
mjtbkh / 2_simple_storage.js
Created January 31, 2022 17:04
truffle migration to use uups uprgadeable contracts
const { deployProxy } = require('@openzeppelin/truffle-upgrades');
const SimpleStorageV1 = artifacts.require("SimpleStorageV1");
module.exports = async function(deployer) {
const instance = await deployProxy(SimpleStorageV1, [], { deployer });
console.log('Deployed', instance.address);
};
@mjtbkh
mjtbkh / SimpleStorage.sol
Created January 28, 2022 20:20
A simple smart-contract with 2 methods to read and write a private variable.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "@openzeppelin/contracts/access/Ownable.sol";
contract SimpleStorage is Ownable {
uint64 private _storage;
function set(uint64 input) public onlyOwner {

Keybase proof

I hereby claim:

  • I am mjtbkh on github.
  • I am mjtbkh (https://keybase.io/mjtbkh) on keybase.
  • I have a public key ASAJwiisF4xbt7UTHpgPllhmJba-zLJNhNoCh3G1562MLgo

To claim this, I am signing this object:

@mjtbkh
mjtbkh / Playground.hs
Created August 25, 2021 09:27
Plutus Playground Smart Contract
import Control.Monad (void)
import Data.Aeson (FromJSON, ToJSON)
import Data.Text as T
import GHC.Generics (Generic)
import Language.Plutus.Contract
import qualified Language.PlutusTx as PlutusTx
import Language.PlutusTx.Prelude
import Ledger
import qualified Ledger.Ada as Ada
import qualified Ledger.Constraints as Constraints
@mjtbkh
mjtbkh / server.js
Last active April 2, 2021 11:17
Simple Node.js server
// load http library from node_modules to begin with
const http = require('http')
// create an instance of <http.Sever>, named 'server'
const server = http.createServer((req, res) => {
res.statusCode = 200
res.end('Hello, world!')
})
// set 'server' to listen on port 3000 for incoming requests