Skip to content

Instantly share code, notes, and snippets.

View michielmulders's full-sized avatar

Michiel Mulders michielmulders

View GitHub Profile
@michielmulders
michielmulders / MyChaincode.ts
Created July 30, 2018 09:02
Hyperledger Fabric private data
await stubHelper.putState(verifiedArgs.key, car, {privateCollection: 'carCollection'});
@michielmulders
michielmulders / MyChaincode.ts
Created July 30, 2018 09:05
Query private data Hyperledger Fabric
async queryPrivateCar(stubHelper: StubHelper, args: string[]) {
const verifiedArgs = await Helpers.checkArgs<any>(args[0], Yup.object()
.shape({
key: Yup.string().required(),
}));
const car = await stubHelper.getStateAsObject(verifiedArgs.key, {privateCollection: 'carCollection'});
if (!car) {
throw new NotFoundError('Car does not exist');
@michielmulders
michielmulders / Keybase proof
Created August 3, 2018 15:35
Keybase Proof
### Keybase proof
I hereby claim:
* I am michielmulders on github.
* I am michielmulders (https://keybase.io/michielmulders) on keybase.
* I have a public key ASB9UR_k4yrvwvtGSf6dTRRvrRkO2yL1dXCUHUnM-VJkego
To claim this, I am signing this object:
@michielmulders
michielmulders / circuit-breaker-solidity.sol
Created August 5, 2018 14:06
Circuit Breaker Solidity Ethereum smart contract example
bool private stopped = false;
address private owner;
modifier isAdmin() {
if(msg.sender != owner) {
throw;
}
_
}
@michielmulders
michielmulders / rateLimitSimple.sol
Last active August 24, 2018 19:26
Simple Rate Limit Withdraw function Solidity Ethereum
contract RateLimit {
uint enabledAt = now;
modifier enabledEvery(uint t) {
require(now >= enabledAt, "Access is denied. Rate limit exceeded.");
enabledAt = now + t;
_;
}
@michielmulders
michielmulders / speed_bump.sol
Created August 5, 2018 15:03
Speed bump - delay contract action Solidity Ethereum
/*
The following code is a part of the smart contract patterns library:
http://www.github.com/blockchaindev/smart-contract-patterns
*/
contract speed_bump {
function speed_bump() {
allowed_time = 0;
}
modifier allow_every(uint t) {
@michielmulders
michielmulders / speed_bump_advanced.sol
Created August 5, 2018 15:16
Speed bump delay contract actions Solidity Ethereum
struct RequestedWithdrawal {
uint amount;
uint time;
}
mapping (address => uint) private balances;
mapping (address => RequestedWithdrawal) private requestedWithdrawals;
uint constant withdrawalWaitPeriod = 28 days; // 4 weeks
function requestWithdrawal() public {
@michielmulders
michielmulders / balance_limit.sol
Created August 5, 2018 16:02
Balance Limit Design Pattern Solidity Ethereum
contract LimitBalance {
uint256 public limit;
function LimitBalance(uint256 value) public {
limit = value;
}
modifier limitedPayable() {
require(this.balance <= limit);
@michielmulders
michielmulders / checks_effects_interaction.sol
Created August 5, 2018 16:11
Checks Effects Interaction Pattern Solidity Ethereum
function auctionEnd() public {
// 1. Checks
require(now >= auctionEnd);
require(!ended);
// 2. Effects
ended = true;
// 3. Interaction
@michielmulders
michielmulders / batchTransactions.js
Created August 7, 2018 20:50
Batch Stellar transactions
const csv = require('csvtojson')
const StellarSdk = require('stellar-sdk');
// TODO - set up keypair and server
async bulkSubmit(fileName) {
const rows = await csv().fromFile(csvFilePath);
for(const row of rows) {
const {source, dest, amount} = row;