diff --git a/contracts/app/ethereum/constitution.sol b/contracts/app/ethereum/constitution.sol new file mode 100644 index 0000000000..8c2c9e0da9 --- /dev/null +++ b/contracts/app/ethereum/constitution.sol @@ -0,0 +1,6 @@ +contract Constitution { + + function Found(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/app/solidity/mode.sol b/contracts/app/solidity/mode.sol new file mode 100644 index 0000000000..6027379cfe --- /dev/null +++ b/contracts/app/solidity/mode.sol @@ -0,0 +1,6 @@ +contract Mode { + + function Normal(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/ballot.sol b/contracts/ballot.sol new file mode 100644 index 0000000000..99219a5d23 --- /dev/null +++ b/contracts/ballot.sol @@ -0,0 +1,65 @@ +pragma solidity ^0.4.0; +contract Ballot { + + struct Voter { + uint weight; + bool voted; + uint8 vote; + address delegate; + } + struct Proposal { + uint voteCount; + } + + address chairperson; + mapping(address => Voter) voters; + Proposal[] proposals; + + /// Create a new ballot with $(_numProposals) different proposals. + function Ballot(uint8 _numProposals) { + chairperson = msg.sender; + voters[chairperson].weight = 1; + proposals.length = _numProposals; + } + + /// Give $(voter) the right to vote on this ballot. + /// May only be called by $(chairperson). + function giveRightToVote(address voter) { + if (msg.sender != chairperson || voters[voter].voted) return; + voters[voter].weight = 1; + } + + /// Delegate your vote to the voter $(to). + function delegate(address to) { + Voter sender = voters[msg.sender]; // assigns reference + if (sender.voted) return; + while (voters[to].delegate != address(0) && voters[to].delegate != msg.sender) + to = voters[to].delegate; + if (to == msg.sender) return; + sender.voted = true; + sender.delegate = to; + Voter delegate = voters[to]; + if (delegate.voted) + proposals[delegate.vote].voteCount += sender.weight; + else + delegate.weight += sender.weight; + } + + /// Give a single vote to proposal $(proposal). + function vote(uint8 proposal) { + Voter sender = voters[msg.sender]; + if (sender.voted || proposal >= proposals.length) return; + sender.voted = true; + sender.vote = proposal; + proposals[proposal].voteCount += sender.weight; + } + + function winningProposal() constant returns (uint8 winningProposal) { + uint256 winningVoteCount = 0; + for (uint8 proposal = 0; proposal < proposals.length; proposal++) + if (proposals[proposal].voteCount > winningVoteCount) { + winningVoteCount = proposals[proposal].voteCount; + winningProposal = proposal; + } + } +} diff --git a/contracts/src/gmbh/company.sol b/contracts/src/gmbh/company.sol new file mode 100644 index 0000000000..1b9da1a0cf --- /dev/null +++ b/contracts/src/gmbh/company.sol @@ -0,0 +1,6 @@ +contract Assets { + + function add(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/src/gmbh/contract.sol b/contracts/src/gmbh/contract.sol new file mode 100644 index 0000000000..27ea2cb127 --- /dev/null +++ b/contracts/src/gmbh/contract.sol @@ -0,0 +1,6 @@ +contract gmbh { + + function register(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/src/gmbh/test.sol b/contracts/src/gmbh/test.sol new file mode 100644 index 0000000000..d1a6e04941 --- /dev/null +++ b/contracts/src/gmbh/test.sol @@ -0,0 +1,6 @@ +contract test { + + function Test(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/src/leasing.sol b/contracts/src/leasing.sol new file mode 100644 index 0000000000..ce3c278aa1 --- /dev/null +++ b/contracts/src/leasing.sol @@ -0,0 +1,14 @@ +contract lease { + + function Vote(uint8 _numProposals) { + proposals.length = _numProposals; + } +} + + +contract borrow { + + function Vote(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/src/ug/finance.sol b/contracts/src/ug/finance.sol new file mode 100644 index 0000000000..0f0dc02842 --- /dev/null +++ b/contracts/src/ug/finance.sol @@ -0,0 +1,6 @@ +contract Finance { + + function Loan(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/src/voting.sol b/contracts/src/voting.sol new file mode 100644 index 0000000000..37a7a96905 --- /dev/null +++ b/contracts/src/voting.sol @@ -0,0 +1,6 @@ +contract voting { + + function Vote(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/contracts/test/client/credit.sol b/contracts/test/client/credit.sol new file mode 100644 index 0000000000..6a8bd4fad8 --- /dev/null +++ b/contracts/test/client/credit.sol @@ -0,0 +1,21 @@ +contract credit_1 { + + struct Proposal { + uint voteCount; + } + + function Ballot(uint8 _numProposals) { + proposals.length = _numProposals; + } +} + +contract credit_2 { + + struct Proposal { + uint voteCount; + } + + function Ballot(uint8 _numProposals) { + proposals.length = _numProposals; + } +} diff --git a/package.json b/package.json index d93c70d84e..2909118ff4 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,6 @@ "csjs-inject": "^1.0.1", "csslint": "^1.0.2", "deep-equal": "^1.0.1", - "npm-link-local": "^1.1.0", - "remix-core": "latest", - "remix-lib": "latest", - "remix-solidity": "latest", - "remix-debugger": "latest", "ethereumjs-abi": "https://github.com/ethereumjs/ethereumjs-abi", "ethereumjs-block": "^1.6.0", "ethereumjs-tx": "^1.3.3", @@ -42,8 +37,14 @@ "mkdirp": "^0.5.1", "nightwatch": "^0.9.3", "notify-error": "^1.2.0", + "npm-link-local": "^1.1.0", "npm-run-all": "^4.0.2", "onchange": "^3.2.1", + "remix-core": "latest", + "remix-debugger": "latest", + "remix-lib": "latest", + "remix-solidity": "latest", + "remixd": "^0.1.2", "rimraf": "^2.6.1", "selenium-standalone": "^6.0.1", "solc": "https://github.com/ethereum/solc-js", @@ -154,6 +155,7 @@ "nightwatch_remote_safari": "nightwatch --config nightwatch.js --env safari", "onchange": "onchange build/app.js -- npm-run-all lint", "prepublish": "mkdirp build; npm-run-all -ls downloadsolc build", + "remixd": "remixd -S ./contracts", "selenium": "execr --silent selenium-standalone start", "selenium-install": "selenium-standalone install", "serve": "execr --silent http-server .",