Skip to content

Instantly share code, notes, and snippets.

View alexroan's full-sized avatar

Alex Roan alexroan

View GitHub Profile
@alexroan
alexroan / loadWeb3.js
Created April 2, 2020 14:25
loadWeb3.js
const Web3 = require("web3");
window.web3 = new Web3(window.ethereum);
window.ethereum.enable();
@alexroan
alexroan / loadContract.js
Last active April 2, 2020 14:41
loadContract.js
import MyContract from "./contracts/MyContract.json";
const networkId = await web3.eth.net.getId();
const deployedNetwork = MyContract.networks[networkId];
const myContract = new web3.eth.Contract(
MyContract.abi,
deployedNetwork && deployedNetwork.address,
);
@alexroan
alexroan / loadAccount.js
Created April 2, 2020 14:27
loadAccount.js
const accounts = await web3.eth.getAccounts();
const account = accounts[0];
@alexroan
alexroan / subscribeToEvent.js
Last active April 2, 2020 14:45
subscribeToEvent.js
myContract.events.MyEvent({})
.on('data', async function(event){
console.log(event.returnValues);
// Do something here
})
.on('error', console.error);
@alexroan
alexroan / BasicERC20.sol
Created April 3, 2020 11:53
BasicERC20.sol
pragma solidity ^0.5.5;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";
contract MyERC20 is ERC20, ERC20Detailed {
constructor(string memory _name, string memory _symbol, uint8 _decimals) public ERC20Detailed(_name, _symbol, _decimals) {
}
}
@alexroan
alexroan / BasicERC721.sol
Created April 3, 2020 12:03
BasicERC721.sol
pragma solidity ^0.5.5;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyERC721 is ERC721 {
struct Person {
string name;
uint8 age;
uint8 height;
@alexroan
alexroan / BasicSafeMath.sol
Last active April 3, 2020 12:16
BasicSafeMath.sol
pragma solidity ^0.5.5;
import "@openzeppelin/contracts/math/SafeMath.sol";
contract BasicSafeMath {
using SafeMath for uint;
function doSomeMath(uint _a, uint _b) public returns (uint) {
return _a.sub(_b);
@alexroan
alexroan / BasicSafeCast.sol
Created April 3, 2020 12:17
BasicSafeCast.sol
pragma solidity ^0.5.5;
import "@openzeppelin/contracts/math/SafeCast.sol";
contract BasicSafeCast {
using SafeCast for uint;
function castToUint8(uint _a) public returns (uint8) {
return _a.toUint8();
@alexroan
alexroan / BasicOwnable.sol
Last active April 3, 2020 12:33
BasicOwnable.sol
pragma solidity ^0.5.5;
import "@openzeppelin/contracts/ownership/Ownable.sol";
contract OwnableContract is Ownable {
function restrictedFunction() public onlyOwner returns (uint) {
return 99;
}
@alexroan
alexroan / accountsChanged.js
Created April 7, 2020 11:48
accountsChanged.js
async function getAccount() {
const accounts = await ethereum.enable();
const account = accounts[0];
// do something with new account here
}
ethereum.on('accountsChanged', function (accounts) {
getAccount();
})