Latest Blog Post
Latest Ethereum News
- Web3 Design Principles – A framework of UX rules for Blockchain based Distributed Applications (part 1) 1 Apr
- Contract Storage and Upgrade in Augur and Colony 1 Apr
- The State of Ethereum Scaling, March 2018 1 Apr
- ScalingNOW! — Scaling Solution Summit Summary 1 Apr
- All videos from EthCC ’18 in Paris 1 Apr
Latest Other News
- Keep an Eye on Hangzhou: A Growing Hub for Blockchain Development 2 May
- Blockchain Lets This Startup Trade Gold That’s Still in the Ground 28 Apr
- Why All Central Banks’ E-Currencies Will Fail Horribly 28 Apr
- Bitmain Can Remotely Shut Down Your Antminer (and Everyone Else’s) 27 Apr
- The Ether Review #63 — Meet DAD, the Digital Aussie Dollar 27 Apr
Tags
- Anonymity
- Anti-Money Laundering
- Attack
- Bitcoin
- Blockchain
- Central Bank
- Consortium
- Crowdfunding
- Cryptocurrency
- Decentralisation
- Digital Currency
- Distributed Ledger
- Energy
- Enterprise
- Ethereum
- Ethereum Classic
- Exchange
- Financial Instruments
- Financial Services
- Fintech
- Golem
- Hack
- Hard Fork
- Hyperledger
- Identity
- Initial Coin Offering
- Insurance
- Internet-of-Things
- Know-Your-Client
- Monero
- Payments
- Peer-to-peer
- Physical Assets
- Privacy
- Regulation
- Scalability
- Security
- Settlements
- Smart Contract
- Source Code
- Synereo
- The DAO
- Tokens
- Wallet
- Zcash
Archives
- September 2018 (2)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (3)
- April 2018 (7)
- March 2018 (1)
- January 2018 (1)
- December 2017 (3)
- November 2017 (9)
- October 2017 (9)
- September 2017 (5)
- August 2017 (7)
- July 2017 (8)
- June 2017 (15)
- May 2017 (27)
- April 2017 (55)
- March 2017 (94)
- February 2017 (131)
- January 2017 (167)
- December 2016 (129)
- November 2016 (179)
- October 2016 (266)
- September 2016 (309)
- August 2016 (156)
- July 2016 (4)
- June 2016 (9)
- May 2016 (11)
- April 2016 (63)
Meta
Category Archives: Blog
Using The Ledger Nano S With MyEtherWallet, Go Ethereum and Parity, Without Chrome
Originally written Mar 10 2017 with title “Can I Use The Ledger Nano S Without Chrome?”. Updated Mar 11 2017, renamed to “Using The Ledger Nano S With MyEtherWallet And Go Ethereum, Without Chrome”). Updated Mar 12 2017 with Parity … Continue reading
Ethereum Decentralised Exchanges
(Work in progress) There are now a few decentralised exchanges on the Ethereum blockchains, and this is a quick look at the technology behind these exchanges: CryptoDerivatives.Market EtherDelta EtherEx EtherOpt MakerMarket, being rebranded to OasisDEX CryptoDerivatives.Market Built by yours … Continue reading
The Incent Coffee Token Smart Contract Security Audit
The Incent Coffee smart contract is currently being used to test out the Waves <-> Ethereum block swapper at https://blockswap.incentloyalty.com/. A version of the contract has been deployed to 0x2c875e5ea4706b1978a41b59edf2d3af31d60e70. This contract was written by Bok Consulting Pty Ltd in … Continue reading
A Quick Look At Melonport’s ICO Contract
Melonport ICO is over after 13 minutes and 17 seconds as the funding goal of 227,000 ETH was reached. Note that MLN tokens are ERC20-compliant but cannot be transferred before endTime = 1489575600 or Mar 15 2017 @ 11:00am (UTC), … Continue reading
Decentralized Capital’s Tokenised Fiat Currency. A Quick Look At The Smart Contracts
Here is Decentralized Capital’s website, their FAQ, and their Token Contracts page. Unfortunately you need to be verified to use this decentralised exchange. Here is their IDEX decentralised exchange screen: Here is their USD.DC verified smart contract deployed at 0x01a7018e6d1fde8a68d12f59b6532fb523b6259d: … Continue reading
Decentralized Capital’s IDEX Is Live on the Mainnet! And A Quick Look At The Smart Contract Code
IDEX Is Live on the Mainnet!. Following is the verified source code from 0x63091244180ae240c87d1f528f5f269134cb07b3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
pragma solidity ^0.4.6; contract Token { bytes32 public standard; bytes32 public name; bytes32 public symbol; uint256 public totalSupply; uint8 public decimals; bool public allowTransactions; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; function transfer(address _to, uint256 _value) returns (bool success); function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success); function approve(address _spender, uint256 _value) returns (bool success); function transferFrom(address _from, address _to, uint256 _value) returns (bool success); } contract DVIP { function feeFor(address from, address to, uint256 amount) constant external returns (uint256 value); } contract Assertive { function assert(bool assertion) { if (!assertion) throw; } } contract Owned is Assertive { address internal owner; event SetOwner(address indexed previousOwner, address indexed newOwner); function Owned () { owner = msg.sender; } modifier onlyOwner { assert(msg.sender == owner); _; } function setOwner(address newOwner) onlyOwner { SetOwner(owner, newOwner); owner = newOwner; } function getOwner() returns (address out) { return owner; } } contract Math is Assertive { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeSub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c>=a && c>=b); return c; } } contract ExchangeWhitelist is Math, Owned { mapping (address => mapping (address => uint256)) public tokens; //mapping of token addresses to mapping of account balances struct Account { bool authorized; uint256 tier; uint256 resetWithdrawal; uint256 withdrawn; } mapping (address => Account) public accounts; mapping (address => bool) public whitelistAdmins; mapping (address => bool) public admins; //ether balances are held in the token=0 account mapping (bytes32 => uint256) public orderFills; address public feeAccount; address public dvipAddress; address public feeMakeExporter; address public feeTakeExporter; event Order(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, address user, uint8 v, bytes32 r, bytes32 s); event Cancel(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, address user, uint8 v, bytes32 r, bytes32 s); event Trade(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, address get, address give, bytes32 hash); event Deposit(address token, address user, uint256 amount, uint256 balance); event Withdraw(address token, address user, uint256 amount, uint256 balance); function ExchangeWhitelist(address feeAccount_, address dvipAddress_) { feeAccount = feeAccount_; dvipAddress = dvipAddress_; feeMakeExporter = 0x00000000000000000000000000000000000000f7; feeTakeExporter = 0x00000000000000000000000000000000000000f8; } function setFeeAccount(address feeAccount_) onlyOwner { feeAccount = feeAccount_; } function setDVIP(address dvipAddress_) onlyOwner { dvipAddress = dvipAddress_; } function setAdmin(address admin, bool isAdmin) onlyOwner { admins[admin] = isAdmin; } function setWhitelister(address whitelister, bool isWhitelister) onlyOwner { whitelistAdmins[whitelister] = isWhitelister; } modifier onlyWhitelister { if (!whitelistAdmins[msg.sender]) throw; _; } modifier onlyAdmin { if (msg.sender != owner && !admins[msg.sender]) throw; _; } function setWhitelisted(address target, bool isWhitelisted) onlyWhitelister { accounts[target].authorized = isWhitelisted; } modifier onlyWhitelisted { if (!accounts[msg.sender].authorized) throw; _; } function() { throw; } function deposit(address token, uint256 amount) payable { if (token == address(0)) { tokens[address(0)][msg.sender] = safeAdd(tokens[address(0)][msg.sender], msg.value); } else { if (msg.value != 0) throw; tokens[token][msg.sender] = safeAdd(tokens[token][msg.sender], amount); if (!Token(token).transferFrom(msg.sender, this, amount)) throw; } Deposit(token, msg.sender, amount, tokens[token][msg.sender]); } function withdraw(address token, uint256 amount) { if (tokens[token][msg.sender] < amount) throw; tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount); if (token == address(0)) { if (!msg.sender.send(amount)) throw; } else { if (!Token(token).transfer(msg.sender, amount)) throw; } Withdraw(token, msg.sender, amount, tokens[token][msg.sender]); } function balanceOf(address token, address user) constant returns (uint256) { return tokens[token][user]; } uint256 internal feeTake; uint256 internal feeMake; uint256 internal feeTerm; function trade(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, address user, uint8 v, bytes32 r, bytes32 s, uint256 amount) onlyWhitelisted { //amount is in amountBuy terms bytes32 hash = sha3(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user); if (!( ecrecover(hash,v,r,s) == user && block.number <= expires && safeAdd(orderFills[hash], amount) <= amountBuy && tokens[tokenBuy][msg.sender] >= amount && tokens[tokenSell][user] >= safeMul(amountSell, amount) / amountBuy )) throw; feeMake = DVIP(dvipAddress).feeFor(feeMakeExporter, msg.sender, 1 ether); feeTake = DVIP(dvipAddress).feeFor(feeTakeExporter, user, 1 ether); tokens[tokenBuy][msg.sender] = safeSub(tokens[tokenBuy][msg.sender], amount); feeTerm = safeMul(amount, ((1 ether) - feeMake)) / (1 ether); tokens[tokenBuy][user] = safeAdd(tokens[tokenBuy][user], feeTerm); feeTerm = safeMul(amount, feeMake) / (1 ether); tokens[tokenBuy][feeAccount] = safeAdd(tokens[tokenBuy][feeAccount], feeTerm); feeTerm = safeMul(amountSell, amount) / amountBuy; tokens[tokenSell][user] = safeSub(tokens[tokenSell][user], feeTerm); feeTerm = safeMul(safeMul(((1 ether) - feeTake), amountSell), amount) / amountBuy / (1 ether); tokens[tokenSell][msg.sender] = safeAdd(tokens[tokenSell][msg.sender], feeTerm); feeTerm = safeMul(safeMul(feeTake, amountSell), amount) / amountBuy / (1 ether); tokens[tokenSell][feeAccount] = safeAdd(tokens[tokenSell][feeAccount], feeTerm); orderFills[hash] = safeAdd(orderFills[hash], amount); Trade(tokenBuy, amount, tokenSell, amountSell * amount / amountBuy, user, msg.sender, hash); } bytes32 internal testHash; uint256 internal amountSelln; function testTrade(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, address user, uint8 v, bytes32 r, bytes32 s, uint256 amount, address sender) constant returns (uint8 code) { testHash = sha3(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user); if (tokens[tokenBuy][sender] < amount) return 1; if (!accounts[sender].authorized) return 2; if (!accounts[user].authorized) return 3; if (ecrecover(testHash, v, r, s) != user) return 4; amountSelln = safeMul(amountSell, amount) / amountBuy; if (tokens[tokenSell][user] < amountSelln) return 5; if (block.number > expires) return 6; if (safeAdd(orderFills[testHash], amount) > amountBuy) return 7; return 0; } function cancelOrder(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, uint8 v, bytes32 r, bytes32 s, address user) { bytes32 hash = sha3(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user); if (ecrecover(hash,v,r,s) != msg.sender) throw; orderFills[hash] = amountBuy; Cancel(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, msg.sender, v, r, s); } } |
BokkyPooBah Wuz Here! In Block #3,000,000! Yaaay!
I got my timing right and had the following validated contract mined in block #3,000,000 in the transaction https://etherscan.io/tx/0x7c03009d52ec50069adb4311d5225fe2249ce5afb3a9951af258f0f680efb19a at the address
Ether.Camp’s Hacker Gold HKG Source Code, Concerns About The USD 50 million Cap, A Significant Bug And A New Bug Fixed Contract!
Originally posted Oct 18 2016; updated 14:05 Oct 22 2016 UTC with live contract details; updated Jan 7 2017 with significant bug; updated Jan 12 2017 with newly deployed contract with the bug fix. This is not investment advise as … Continue reading
Gnosis Prediction Market Platform Crowdfunding Contract Security Audited Source Code
Originally posted Dec 13 2016, updated Dec 16 2016 with bug bounty details. This is not advise as to whether the Gnosis prediction market platform is a good investment or not. This is just a quick look at the source … Continue reading
Posted in Blog
Tagged Crowdfunding, Ethereum, Gnosis, Smart Contract, Source Code, Tokens
Leave a comment
A Quick Look At EtherDelta’s Smart Contract
Here is EtherDelta’s screen running in the Ethereum Wallet application, executed to operate as Mist by using the command line parameter –mode mist, and then navigating to the URL https://etherdelta.github.io/#GNTW-ETH. EtherDelta is produced by https://etherboost.github.io/. Following is the source code … Continue reading
Posted in Blog
Tagged Decentralisation, Ethereum, Exchange, Smart Contract, Source Code
Leave a comment
The Original Augur REP TokenTraderFactory Contract (Work In Progress. Note that there is a bug in this contract)
NOTE Dec 14 2016: I’ve found a bug in the original REP TokenTraderFactory that could potentially lead to a loss in $$$. I’m working with the original author to fix this. Do not use this contract anymore. A new contract … Continue reading
Ethereum Devcon2 Conference In Shanghai – Unofficial Single-Page Agenda With Slides, Videos And Links
Page created Sep 22 2016. Last updated Dec 13 2016 (72 videos added in total). This page will be updated with the links to the videos when they are made available. In the meantime, check out the puzzle in 100 … Continue reading
SFMW – The Ethereum Blockchain, Smart Contracts, Tokens And A Decentralised Trustless Exchange Contract Market
Status: Work-in-progress Abstract The first ever trusted platform for the transfer of tokens was first established by the Bitcoin network in on Jan-03-2009 18:15:05 UTC. On Jul-30-2015 15:26:13 +UTC, the first block #0 of the Ethereum blockchain was mined. This … Continue reading
100 Tricky Stick Puzzles Disrupt The Ethereum Devcon2 Conference In Shanghai
Published Sep 25 2016, updated with more photos from @tayvano Oct 18 2016. Updated with link to Lefteris’ tweet Nov 28 2016. I made 100 Tricky Stick puzzles for the Ethereum Devcon2 conference in Shanghai. The first indication of disruption … Continue reading
The Golem Network Token Wrapped (GNTW) Contract
The Golem Network Token (GNT) is not a fully ERC20-compliant token. The ERC20 standard requires the following methods and events to be implemented for full compliance:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
contract ERCTokenInterface { // Methods function totalSupply() constant returns (uint256 totalSupply); function balanceOf(address _owner) constant returns (uint256 balance); function transfer(address _to, uint256 _value) returns (bool success); function transferFrom(address _from, address _to, uint256 _value) returns (bool success); function approve(address _spender, uint256 _value) returns (bool success); // Events event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } |
Check out the Golem Network Token source code at Golem Crowdfunding Funded To … Continue reading
Trustless Golem Network Token (GNT) Selling Contract
Some individuals missed out on purchasing the Golem Network Token (GNT) in the Golem Crowdfunding Funded To 820,000 ETH Cap, as the sale was over within ~ half an hour. The tokens were sold a 1 ether (ETH) = 1,000 … Continue reading
Ethereum Paper Wallet
[work in progress] You may have been given an Ethereum paper wallet. Here what you can do with it. The Ethereum World Computer is a programmable decentralised blockchain created by the Ethereum Foundation. It was devised by Vitalik Buterin, currently … Continue reading
Golem Crowdfunding Funded To 820,000 ETH Cap
Original post Oct 24 2016. Updated Nov 12 2016 with deployed contract and source code, and crowdfunding statistics. This is not advise as to whether Golem is a good investment or not. This is just a quick look at what … Continue reading
Ethereum Slot Machine Source Code
I don’t like to promote gambling, but here is the source code for your perusal. From Ethereum based slot machine. Website http://www.etherslots.win/.
Gnosis Prediction Market Platform And Crowdfunding Contract Source Code
This is not advise as to whether the Gnosis prediction market platform is a good investment or not. This is just a quick look at the source code behind what Gnosis is offering. Reference Gnosis contracts published – bug bounty … Continue reading
Posted in Blog
Tagged Crowdfunding, Ethereum, Gnosis, Smart Contract, Source Code, Tokens
Leave a comment
Decentralised Gambling Game vDice Announces Crowdsale
Originally post Oct 16 2016. Updated Oct 31 with audit report. This is not investment advise as to whether vDice is a good investment or not. This is just a quick look at the smart contract behind vDice. Sponsored story … Continue reading
Arcade City’s Upcoming Crowdfunding
Originally posted Oct 24 2016. Updated Nov 1 2016. This is not advise as to whether Arcade City is a good investment or not. This is just a quick look at what Arcade City is offering and how they are … Continue reading
The DAO Hacker’s Booty Is On The Move
Update 23:05 Oct 26 2016 UTC with trace through ShapeShift to Bitcoin address 1M2aaNN3GTw6dy13uScodHaQ8Egr6xr6Ew. And corrected ETC equivalent USD amounts. Update Oct 28 2016 15:39:45 UTC re ShapeShift transparency. Table of contents Summary The Hacker’s Booty Address Movements From The … Continue reading
A Quick Look At The Waves Platform
This is not advise as to whether the Waves platform is a good investment or not. This is just a quick look at what Waves is offering and how they are doing it. From https://wavesplatform.com/: Blockchain-powered customizable tokens platform Kickstart … Continue reading
Ethereum Network Attacker’s IP Address Is Traceable
Updates: Originally posted on Oct 22 2016 as “The Ongoing Ethereum Attacks (Work In Progress)”, but renamed after finding the links to the mining pools. 05:55 Oct 23 2016 UTC – First estimate of the number of accounts created by … Continue reading
Ethereum Gas Reprice Hard Fork Was A Success
Originally posted Oct 19 2016, updated 02:49 Oct 21 2016 UTC. Table of contents Summary The Attacks The Hard Forks The First Hard Fork – Gas Repricing The Attacks Have Stopped The Gas Limit The Gas Price The Uncles The … Continue reading
EtherDelta – Concern Over Whether USD 12K in Ethers Can Be Withdrawn After The Gas Reprice Hard Fork
The Ethereum blockchain will be hard-forked this coming Tuesday on block 2463000 with the main changes being the gas repricing of opcodes (EIP 150 version 1c). A concerned redditor asked There is over $12,000 USD in this contract! Please can … Continue reading
Decentralized Capital Open Sources Their Asset Contract Code
From Decentralized Capital Open Sources Their Asset Contract Code: We’ve open sourced our contract code for community review, third party scrutiny is much appreciated! We’ve got a few other projects under development and will be open sourcing those too once … Continue reading
SingularDTV Crowdsale Completed Within Fifteen Minutes
SingularDTV Crowdsale Completed Within Fifteen Minutes and SingularDTV Raises $7.5M to Incentivize Creative Output. Website – https://singulardtv.com/. Reddit – https://www.reddit.com/r/SingularDTV.
Kibo Contract Code – Possible Bug Bounty
News – Kibo contract code is now open access. Kibo is an international lotto. Their website is at https://kiboplatform.net/en/landing.html. Here is their whitepaper.