Skip to content

Instantly share code, notes, and snippets.

View asselstine's full-sized avatar

Brendan Asselstine asselstine

View GitHub Profile
@asselstine
asselstine / Work.sol
Created November 1, 2018 11:23
Work Contract
pragma solidity ^0.4.24;
import 'openzeppelin-solidity/contracts/ownership/Ownable.sol';
import 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol';
import './IndexedAddressArray.sol';
contract Work is Ownable {
using IndexedAddressArray for IndexedAddressArray.Data;
address public jobManager;
@asselstine
asselstine / test.sh
Last active September 26, 2018 22:39
Docker separated ganache runner
docker run --rm -it -d --name ganache-cli -p 8145:8545 trufflesuite/ganache-cli:latest -e 10000000000 -l 4700038 -h 0.0.0.0; \
truffle compile --network=test && truffle test --network=test $1; \
EXIT_STATUS=$?; \
echo 'Shutting down ganache-cli...'; \
docker stop ganache-cli && echo 'Shut down ganache-cli' & \
exit $EXIT_STATUS
@asselstine
asselstine / ganache.sh
Created September 12, 2018 03:13
Ganache startup script
#! /bin/sh
mkdir -p .ganache
ganache-cli \
--db .ganache \
-l 4700038 \
-i 1234 \
-e 100000000000 \
-a 10 \
-u 0 \
-m "rose dynamic miracle summer near tell genius label video check stumble miss"
@asselstine
asselstine / IntUnderflow.sol
Created September 12, 2018 02:59
A Simple Example of Integer underflow
pragma solidity ^0.4.4;
/*
This contract is vulnerable to an attacker exploting
integer underflow. When you subtract from unsigned integers
at their lowest value (0), they cycle to their highest value.
Similarly, adding 1 to a max value unsigned integer will
cycle it to zero.
*/
@asselstine
asselstine / HoneyPotCollect.sol
Created September 12, 2018 02:47
HoneyPot Collector
pragma solidity ^0.4.8;
import "./HoneyPot.sol";
contract HoneyPotCollect {
HoneyPot public honeypot;
function HoneyPotCollect (address _honeypot) {
honeypot = HoneyPot(_honeypot);
}
function kill () {
suicide(msg.sender);
}
@asselstine
asselstine / HoneyPot.sol
Created September 12, 2018 02:46
HoneyPot Contract
pragma solidity ^0.4.8;
contract HoneyPot {
mapping (address => uint) public balances;
function HoneyPot() payable {
put();
}
function put() payable {
balances[msg.sender] = msg.value;
}
function get() {
@asselstine
asselstine / example.js
Created September 6, 2018 22:52
An example of using MedCredits IPFS-backed encrypted HIPAA-compliant storage
import { ipfsStorage } from 'medcredits'
async function getCaseDetails (ipfsHash, encryptionKey) {
const detailsJson = await ipfsStorage.downloadJson(ipfsHash, encryptionKey)
const details = JSON.parse(detailsJson)
const [firstImageDataUrl, secondImageDataUrl] = await Promise.all([
ipfsStorage.downloadImage(details.firstImageHash, props.caseKey),
ipfsStorage.downloadImage(details.secondImageHash, props.caseKey)
])
return {
@asselstine
asselstine / gist:e6abd9c192228fab30f2e45b790f78f0
Created September 6, 2018 22:46
Some snippets showing the case challenging code for arbitration
contract ChallengeManager is Ownable, Initializable {
using RegistryLookup for Registry;
Registry registry;
event ChallengeDoctorSet(address indexed _case, address indexed _patient, address indexed _challengingDoctor, bytes doctorEncryptedKey);
event ChallengingDoctorCleared(address indexed _case, address indexed _patient, address indexed _diagnosingDoctor);
event CaseChallenged(address indexed _case, address indexed _patient, address indexed _challengingDoctor);
event ChallengedCaseClosed(address indexed _case, address indexed _patient, address indexed _diagnosingDoctor, address _challengingDoctor);
@asselstine
asselstine / TCR_Example.sol
Last active September 12, 2018 17:13
An example of a contract that uses the DoctorRegistry
import 'medcredits-solidity/DoctorRegistry.sol';
contract CaseFactory {
uint8 constant DERMATOLOGY_CODE = 0x00001a83;
Case[] cases;
mapping (uint256 => address) public caseIndices;
DoctorRegistry doctorRegistry;
function CaseFactory(DoctorRegistry _doctorRegistry) {
@asselstine
asselstine / config.yml
Created August 24, 2018 22:05
Run Truffle Tests on CircleCI 2.0
# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
#
version: 2
jobs:
build:
docker:
# specify the version you desire here