contract CrowdFund {
mapping(address => uint) balances;
bool locked;
function lock() { locked = true; }
function fund() payable {
require(!locked);
balances[msg.sender] += msg.value;
}
function withdraw() {
require(!locked);
uint amount = balances[msg.sender];
delete balances[msg.sender];
msg.sender.transfer(amount);
}
// More code ...
}
contract CrowdFund {
mapping(address => uint) balances;
bool locked;
function lock() { locked = true; }
function fund() payable {
require(!locked);
balances[msg.sender] += msg.value;
}
function withdraw() {
require(!locked);
uint amount = balances[msg.sender];
delete balances[msg.sender];
msg.sender.transfer(amount);
}
// More code ...
function doSomethingComplicated() {
// ...
locked = false;
// ...
}
}
/// @title A 'bhòtadh le riochdachadh.
contract Baileat {
// Tha seo a 'dearbhadh seòrsa iom-fhillte ùr a nì
// bi air a chleachdadh airson atharrachaidhean nas fhaide air adhart.
// Bidh e a 'riochdachadh aon neach-bhòtaidh.
struct neachBhòtaidh {
uint cuideam; // tha cuideam air a chruinneachadh le cuideam
bool bhòtadh; // ma tha e fìor, bhòt an neach sin mu thràth
address riochdaire; // neach air a thiomnadh gu
uint bhòt; // clàr-amais den mholadh bhòtaichte
}
// Is e seo seòrsa airson aon mholadh.
struct Moladh {
bytes32 ainm; // goirid ainm (suas ri 32 bytes)
uint bhòtACunntadh; // àireamh de bhòtaichean cruinnichte
}
address public neachCathrach;
// Tha seo a 'dearbhadh caochlaideach stàite a tha sin
// a 'stòradh structar `neachBhòtaidh` airson gach seòladh
// a dh'fhaodadh a bhith ann.
mapping(address => neachBhòtaidh) public luchdBhòtaidh;
// A h-uile ìre de structaran `Moladh`.
Moladh[] public molaidhean;
/// Cruthaich baileat ùr gus taghadh de `ainmeanMolaidh` a thaghadh.
function Baileat(bytes32[] ainmeanMolaidh) {
neachCathrach = msg.sender;
luchdBhòtaidh[neachCathrach].cuideam = 1;
// Airson gach aon de na h-ainmean molaidh a tha air an solarachadh,
// cruthaich cuspair tagraidh ùr agus cuir ris
// gu deireadh an t-sreath.
for (uint i = 0; i < ainmeanMolaidh.length; i++) {
// `Moladh({...})` a 'cruthachadh sealach
// Proposal object agus `molaidhean.push (...)`
// a 'cur crìoch air `molaidhean`.
molaidhean.push(Moladh({
ainm: ainmeanMolaidh[i],
bhòtACunntadh: 0
}));
}
}
// ...
}