Skip to content

Instantly share code, notes, and snippets.

Avatar
🚀
Shipping

Rahul Sethuram rhlsthrm

🚀
Shipping
View GitHub Profile
View WeenusToken.sol
pragma solidity ^0.6.0;
// Send an 0 value transaction with no data to mint 1,000 new tokens
//
// Symbol : DAI
// Name : Dai Stablecoin System
// Total supply: 1,000,000.000000000000000000 + faucet minting
// Decimals : 18
// Version : 1
// Chain ID : 4
@rhlsthrm
rhlsthrm / ReentrancyToken.sol
Created Oct 9, 2018
Fake ERC20 token that recreates reentrancy attack
View ReentrancyToken.sol
pragma solidity ^0.4.23;
import "./HumanStandardToken.sol";
import "../../LedgerChannel.sol";
contract ReentrancyToken is HumanStandardToken {
LedgerChannel ledgerChannel;
uint256 constant MAX_REENTRIES = 5;
uint256 numReentries = 0;
@rhlsthrm
rhlsthrm / MockDai.sol
Created Mar 1, 2019
Mintable token using latest OpenZeppelin contracts, for Solidity ^0.5.2.
View MockDai.sol
pragma solidity ^0.5.2;
/**
* @title Roles
* @dev Library for managing addresses assigned to a Role.
*/
library Roles {
struct Role {
mapping (address => bool) bearer;
}
View demo.ts
import { Sequelize } from "sequelize";
import { getPostgresStore } from "@connext/store";
import { connect as connext } from "@connext/client";
import {
ColorfulLogger,
getTestReceiptToSign,
getTestVerifyingContract,
signReceiptMessage,
} from "@connext/utils";
import {
@rhlsthrm
rhlsthrm / prysm-digitalocean-setup
Last active Jun 7, 2020
Instructions to install Prysm on Digital Ocean Ubuntu.
View prysm-digitalocean-setup
# VM Specs
- Ubuntu 4GB RAM
- 20GB HD
# Prerequisites
- Docker
```sh
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
View node-queries.sql
-- GET NODE FREE BALANCE ACROSS ALL CHANNELS FOR TOKEN
SELECT ("latestState" #> '{balances}' -> (
SELECT array_position(
array(
SELECT jsonb_array_elements_text("latestState" #> '{tokenAddresses}')),
'0xEcFcaB0A285d3380E488A39B4BB21e777f8A4EaC' -- TOKEN ADDRESS
)::integer - 1
) #> '{0,amount,_hex}')
FROM channel INNER JOIN app_instance
ON app_instance."channelMultisigAddress" = channel."multisigAddress"
@rhlsthrm
rhlsthrm / SwiftCallbackHell.swift
Last active May 29, 2020
Swift code to use raw Grand Central Dispatch to make requests
View SwiftCallbackHell.swift
import Foundation
var todos = [String: Any]()
let dispatchGroup = DispatchGroup()
for todo in 0..10 {
let url = URL(string: "https://jsonplaceholder.typicode.com/todos/\(todo)")
dispatchGroup.enter()
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
View counter.ts
import { ethers } from "@nomiclabs/buidler";
import { Signer, Wallet } from "ethers";
import chai from "chai";
import { deployContract, solidity } from "ethereum-waffle";
import CounterArtifact from "../artifacts/Counter.json";
import { Counter } from "../typechain/Counter";
chai.use(solidity);
const { expect } = chai;
View machine.js
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
@rhlsthrm
rhlsthrm / admin.ts
Created Apr 15, 2020
Calculate pending balances
View admin.ts
import { connect } from "ts-nats";
import { StateChannelJSON, toBN, CoinTransfer } from "@connext/types";
import { Zero, AddressZero } from "ethers/constants";
import { formatEther } from "ethers/utils";
type FreeBalanceAppState = {
activeApps: any[];
tokenAddresses: string[];
balances: CoinTransfer[][];
};