Skip to content

Instantly share code, notes, and snippets.

View michielmulders's full-sized avatar

Michiel Mulders michielmulders

View GitHub Profile
@michielmulders
michielmulders / batchTransfer.js
Created April 27, 2018 20:04
BatchOverflow Bug ERC20 - Not using SafeMath Lib
function batchTransfer(address[] _receivers, uint256 _value) public whenNotPaused returns (bool) {
uint cnt = _receivers.length;
uint256 amount = uint256(cnt) * _value;
require(cnt > 0 && cnt <= 20);
require(_value > 0 && balances[msg.sender] >= amount);
balances[msg.sender] = balances[msg.sender].sub(amount);
for (uint i = 0; i < cnt; i++) {
balances[_receivers[i]] = balances[_receivers[i]].add(_value);
Transfer(msg.sender, _receivers[i], _value);
@michielmulders
michielmulders / random.sol
Created May 24, 2018 08:49
Simple random number generation Ethereum smart contract Solidity
function random() private view returns (uint8) {
return uint8(uint256(keccak256(block.timestamp, block.difficulty))%251);
}
@michielmulders
michielmulders / blockwatcher.sol
Created May 24, 2018 08:52
Blocknumber Watcher Solidity Ethereum
function f( blocknumber, to_address, value_) {
var filter = web3.eth.filter('latest').watch(
function(err, blockHash) {
var target=blocknumber;
if(web3.eth.blockNumber==target) {
filter.stopWatching(); // your function here
web3.eth.sendTransaction({to:to_address, from:web3.eth.coinbase, value: web3.toWei(value_,"ether")});
filter = null;
@michielmulders
michielmulders / helloworld.rho
Created May 30, 2018 19:25
Rholang hello world
new HelloWorld in {
contract HelloWorld(return) = {
return!("Hello, World!")
} |
new myChannel in {
HelloWorld!(*myChannel)
}
}
@michielmulders
michielmulders / helloagain.rho
Created May 30, 2018 19:27
Rholang hello again input output
new HelloAgain in {
contract HelloAgain(_) = {
new chan in {
chan!("Hello again, world!") |
for (@text <- chan) { Nil }
}
} | HelloAgain!(Nil)
}
@michielmulders
michielmulders / token.rho
Created May 30, 2018 19:44
Rholang RChain token smart contract Ethereum clone
contract Token( message_sender, total_supply ) {
def transfer( message_sender, to, amount, rtn ) = {
for( balances <- balances_channel ) {
x!( *balances.get(message_sender) )
| y!( *balances.get(to) )
| for( balance_of_sender <- x ; balances_of_receiver <- y ) {
@michielmulders
michielmulders / erc1070.sol
Created June 12, 2018 19:50
ERC1070 standard
initializeBounty(address _controller, string _data)
fulfillBounty(address[] _fulfillers, uint[] _numerators, uint _denomenator, string _data)
acceptFulfillment(uint _fulfillmentId, StandardToken[] _payoutTokens, uint[] _tokenAmounts)
drainBounty(StandardToken[] _payoutTokens)
changeBounty(address _controller, string _data)
@michielmulders
michielmulders / remove_options.js
Created June 21, 2018 14:38
React Remove Options From List - Pass function two levels
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
class IndecisionApp extends React.Component {
constructor(props) {
super(props);
this.handleDeleteOptions = this.handleDeleteOptions.bind(this);
@michielmulders
michielmulders / collections_config.json
Created July 30, 2018 08:40
Collection Config HLF
[
{
"name": "carCollection",
"policy": "OR ('Org1MSP.member','Org2MSP.member')",
"requiredPeerCount": 0,
"maxPeerCount": 3,
"blockToLive":1000000
}
]
@michielmulders
michielmulders / MyChaincode.ts
Created July 30, 2018 09:00
Original createCar function Hyperledger Fabric
async createCar(stubHelper: StubHelper, args: string[]) {
const verifiedArgs = await Helpers.checkArgs<any>(args[0], Yup.object()
.shape({
key: Yup.string().required(),
make: Yup.string().required(),
model: Yup.string().required(),
color: Yup.string().required(),
owner: Yup.string().required(),
}));