mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #3534 from meowingtwurtle/strictAddresses
[BREAKING] Strict checking of address literals
This commit is contained in:
commit
0ac4609097
@ -496,7 +496,7 @@ high or low invalid bids.
|
|||||||
if (value <= highestBid) {
|
if (value <= highestBid) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (highestBidder != 0) {
|
if (highestBidder != address(0)) {
|
||||||
// Refund the previously highest bidder.
|
// Refund the previously highest bidder.
|
||||||
pendingReturns[highestBidder] += highestBid;
|
pendingReturns[highestBidder] += highestBid;
|
||||||
}
|
}
|
||||||
|
@ -2287,14 +2287,28 @@ void TypeChecker::endVisit(Literal const& _literal)
|
|||||||
|
|
||||||
if (_literal.looksLikeAddress())
|
if (_literal.looksLikeAddress())
|
||||||
{
|
{
|
||||||
if (_literal.passesAddressChecksum())
|
// Assign type here if it even looks like an address. This prevents double error in 050 mode for invalid address
|
||||||
_literal.annotation().type = make_shared<IntegerType>(160, IntegerType::Modifier::Address);
|
_literal.annotation().type = make_shared<IntegerType>(160, IntegerType::Modifier::Address);
|
||||||
else
|
|
||||||
m_errorReporter.warning(
|
string msg;
|
||||||
|
if (_literal.value().length() != 42) // "0x" + 40 hex digits
|
||||||
|
// looksLikeAddress enforces that it is a hex literal starting with "0x"
|
||||||
|
msg =
|
||||||
|
"This looks like an address but is not exactly 40 hex digits. It is " +
|
||||||
|
to_string(_literal.value().length() - 2) +
|
||||||
|
" hex digits.";
|
||||||
|
else if (!_literal.passesAddressChecksum())
|
||||||
|
{
|
||||||
|
msg = "This looks like an address but has an invalid checksum.";
|
||||||
|
if (!_literal.getChecksummedAddress().empty())
|
||||||
|
msg += " Correct checksummed address: \"" + _literal.getChecksummedAddress() + "\".";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!msg.empty())
|
||||||
|
m_errorReporter.syntaxError(
|
||||||
_literal.location(),
|
_literal.location(),
|
||||||
"This looks like an address but has an invalid checksum. "
|
msg +
|
||||||
"If this is not used as an address, please prepend '00'. " +
|
" If this is not used as an address, please prepend '00'. " +
|
||||||
(!_literal.getChecksummedAddress().empty() ? "Correct checksummed address: '" + _literal.getChecksummedAddress() + "'. " : "") +
|
|
||||||
"For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals"
|
"For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -858,11 +858,13 @@ bool RationalNumberType::isImplicitlyConvertibleTo(Type const& _convertTo) const
|
|||||||
{
|
{
|
||||||
if (_convertTo.category() == Category::Integer)
|
if (_convertTo.category() == Category::Integer)
|
||||||
{
|
{
|
||||||
if (m_value == rational(0))
|
|
||||||
return true;
|
|
||||||
if (isFractional())
|
if (isFractional())
|
||||||
return false;
|
return false;
|
||||||
IntegerType const& targetType = dynamic_cast<IntegerType const&>(_convertTo);
|
IntegerType const& targetType = dynamic_cast<IntegerType const&>(_convertTo);
|
||||||
|
if (targetType.isAddress())
|
||||||
|
return false;
|
||||||
|
if (m_value == rational(0))
|
||||||
|
return true;
|
||||||
unsigned forSignBit = (targetType.isSigned() ? 1 : 0);
|
unsigned forSignBit = (targetType.isSigned() ? 1 : 0);
|
||||||
if (m_value > rational(0))
|
if (m_value > rational(0))
|
||||||
{
|
{
|
||||||
|
@ -50,7 +50,7 @@ contract MultiSigWallet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
modifier transactionExists(uint transactionId) {
|
modifier transactionExists(uint transactionId) {
|
||||||
if (transactions[transactionId].destination == 0)
|
if (transactions[transactionId].destination == address(0))
|
||||||
throw;
|
throw;
|
||||||
_;
|
_;
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ contract MultiSigWallet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
modifier notNull(address _address) {
|
modifier notNull(address _address) {
|
||||||
if (_address == 0)
|
if (_address == address(0))
|
||||||
throw;
|
throw;
|
||||||
_;
|
_;
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ contract MultiSigWallet {
|
|||||||
validRequirement(_owners.length, _required)
|
validRequirement(_owners.length, _required)
|
||||||
{
|
{
|
||||||
for (uint i=0; i<_owners.length; i++) {
|
for (uint i=0; i<_owners.length; i++) {
|
||||||
if (isOwner[_owners[i]] || _owners[i] == 0)
|
if (isOwner[_owners[i]] || _owners[i] == address(0))
|
||||||
throw;
|
throw;
|
||||||
isOwner[_owners[i]] = true;
|
isOwner[_owners[i]] = true;
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ contract ico is safeMath {
|
|||||||
interest_s memory _idb;
|
interest_s memory _idb;
|
||||||
address _addr = beneficiary;
|
address _addr = beneficiary;
|
||||||
uint256 _to = (block.number - startBlock) / interestBlockDelay;
|
uint256 _to = (block.number - startBlock) / interestBlockDelay;
|
||||||
if ( _addr == 0x00 ) { _addr = msg.sender; }
|
if ( _addr == address(0x00) ) { _addr = msg.sender; }
|
||||||
|
|
||||||
require( block.number > icoDelay );
|
require( block.number > icoDelay );
|
||||||
require( ! aborted );
|
require( ! aborted );
|
||||||
@ -257,7 +257,7 @@ contract ico is safeMath {
|
|||||||
@premiumContractAddr Address of the corion premium token contract
|
@premiumContractAddr Address of the corion premium token contract
|
||||||
*/
|
*/
|
||||||
require( msg.sender == owner );
|
require( msg.sender == owner );
|
||||||
require( tokenAddr == 0x00 && premiumAddr == 0x00 );
|
require( tokenAddr == address(0x00) && premiumAddr == address(0x00) );
|
||||||
tokenAddr = tokenContractAddr;
|
tokenAddr = tokenContractAddr;
|
||||||
premiumAddr = premiumContractAddr;
|
premiumAddr = premiumContractAddr;
|
||||||
}
|
}
|
||||||
@ -281,7 +281,7 @@ contract ico is safeMath {
|
|||||||
If they call the contract without any function then this process will be taken place.
|
If they call the contract without any function then this process will be taken place.
|
||||||
*/
|
*/
|
||||||
require( isICO() );
|
require( isICO() );
|
||||||
require( buy(msg.sender, 0x00) );
|
require( buy(msg.sender, address(0x00)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
function buy(address beneficiaryAddress, address affilateAddress) payable returns (bool success) {
|
function buy(address beneficiaryAddress, address affilateAddress) payable returns (bool success) {
|
||||||
@ -300,9 +300,9 @@ contract ico is safeMath {
|
|||||||
@affilateAddress The address of the person who offered who will get the referral reward. It can not be equal with the beneficiaryAddress.
|
@affilateAddress The address of the person who offered who will get the referral reward. It can not be equal with the beneficiaryAddress.
|
||||||
*/
|
*/
|
||||||
require( isICO() );
|
require( isICO() );
|
||||||
if ( beneficiaryAddress == 0x00) { beneficiaryAddress = msg.sender; }
|
if ( beneficiaryAddress == address(0x00)) { beneficiaryAddress = msg.sender; }
|
||||||
if ( beneficiaryAddress == affilateAddress ) {
|
if ( beneficiaryAddress == affilateAddress ) {
|
||||||
affilateAddress = 0x00;
|
affilateAddress = address(0x00);
|
||||||
}
|
}
|
||||||
uint256 _value = msg.value;
|
uint256 _value = msg.value;
|
||||||
if ( beneficiaryAddress.balance < 0.2 ether ) {
|
if ( beneficiaryAddress.balance < 0.2 ether ) {
|
||||||
@ -317,7 +317,7 @@ contract ico is safeMath {
|
|||||||
totalMint = safeAdd(totalMint, _reward);
|
totalMint = safeAdd(totalMint, _reward);
|
||||||
require( foundationAddress.send(_value * 10 / 100) );
|
require( foundationAddress.send(_value * 10 / 100) );
|
||||||
uint256 extra;
|
uint256 extra;
|
||||||
if ( affilateAddress != 0x00 && ( brought[affilateAddress].eth > 0 || interestDB[affilateAddress][0].amount > 0 ) ) {
|
if ( affilateAddress != address(0x00) && ( brought[affilateAddress].eth > 0 || interestDB[affilateAddress][0].amount > 0 ) ) {
|
||||||
affiliate[affilateAddress].weight = safeAdd(affiliate[affilateAddress].weight, _reward);
|
affiliate[affilateAddress].weight = safeAdd(affiliate[affilateAddress].weight, _reward);
|
||||||
extra = affiliate[affilateAddress].weight;
|
extra = affiliate[affilateAddress].weight;
|
||||||
uint256 rate;
|
uint256 rate;
|
||||||
|
@ -123,7 +123,7 @@ contract module {
|
|||||||
|
|
||||||
@ret This is the module handler address or not
|
@ret This is the module handler address or not
|
||||||
*/
|
*/
|
||||||
if ( moduleHandlerAddress == 0x00 ) { return true; }
|
if ( moduleHandlerAddress == address(0x00) ) { return true; }
|
||||||
if ( moduleStatus != status.Connected ) { return false; }
|
if ( moduleStatus != status.Connected ) { return false; }
|
||||||
return addr == moduleHandlerAddress;
|
return addr == moduleHandlerAddress;
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ contract moduleHandler is multiOwner, announcementTypes {
|
|||||||
require( success && ! found );
|
require( success && ! found );
|
||||||
(success, found, id) = getModuleIDByHash(input.name);
|
(success, found, id) = getModuleIDByHash(input.name);
|
||||||
require( success && ! found );
|
require( success && ! found );
|
||||||
(success, found, id) = getModuleIDByAddress(0x00);
|
(success, found, id) = getModuleIDByAddress(address(0x00));
|
||||||
require( success );
|
require( success );
|
||||||
if ( ! found ) {
|
if ( ! found ) {
|
||||||
id = modules.length;
|
id = modules.length;
|
||||||
@ -92,7 +92,7 @@ contract moduleHandler is multiOwner, announcementTypes {
|
|||||||
*/
|
*/
|
||||||
(bool _success, bool _found, uint256 _id) = getModuleIDByName(name);
|
(bool _success, bool _found, uint256 _id) = getModuleIDByName(name);
|
||||||
if ( _success && _found ) { return (true, true, modules[_id].addr); }
|
if ( _success && _found ) { return (true, true, modules[_id].addr); }
|
||||||
return (true, false, 0x00);
|
return (true, false, address(0x00));
|
||||||
}
|
}
|
||||||
function getModuleIDByHash(bytes32 hashOfName) public constant returns( bool success, bool found, uint256 id ) {
|
function getModuleIDByHash(bytes32 hashOfName) public constant returns( bool success, bool found, uint256 id ) {
|
||||||
/*
|
/*
|
||||||
|
@ -20,7 +20,7 @@ contract ownedDB {
|
|||||||
|
|
||||||
@bool Owner has called the contract or not
|
@bool Owner has called the contract or not
|
||||||
*/
|
*/
|
||||||
if ( owner == 0x00 ) {
|
if ( owner == address(0x00) ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return owner == msg.sender;
|
return owner == msg.sender;
|
||||||
|
@ -53,7 +53,7 @@ contract premium is module, safeMath {
|
|||||||
@genesisValue Array of the balance of the genesis addresses
|
@genesisValue Array of the balance of the genesis addresses
|
||||||
*/
|
*/
|
||||||
super.registerModuleHandler(moduleHandler);
|
super.registerModuleHandler(moduleHandler);
|
||||||
require( dbAddress != 0x00 );
|
require( dbAddress != address(0x00) );
|
||||||
db = ptokenDB(dbAddress);
|
db = ptokenDB(dbAddress);
|
||||||
if ( ! forReplace ) {
|
if ( ! forReplace ) {
|
||||||
require( db.replaceOwner(this) );
|
require( db.replaceOwner(this) );
|
||||||
@ -273,7 +273,7 @@ contract premium is module, safeMath {
|
|||||||
@to For who?
|
@to For who?
|
||||||
@amount Amount
|
@amount Amount
|
||||||
*/
|
*/
|
||||||
require( from != 0x00 && to != 0x00 && to != 0xa636a97578d26a3b76b060bbc18226d954cf3757 );
|
require( from != address(0x00) && to != address(0x00) && to != 0xa636A97578d26A3b76B060Bbc18226d954cf3757 );
|
||||||
require( ( ! isICO) || genesis[from] );
|
require( ( ! isICO) || genesis[from] );
|
||||||
require( db.decrease(from, amount) );
|
require( db.decrease(from, amount) );
|
||||||
require( db.increase(to, amount) );
|
require( db.increase(to, amount) );
|
||||||
|
@ -161,7 +161,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
if ( schellingRound == 0 ) {
|
if ( schellingRound == 0 ) {
|
||||||
schellingRound = currentSchellingRound;
|
schellingRound = currentSchellingRound;
|
||||||
}
|
}
|
||||||
if ( clients[addr].providerAddress != 0 ) {
|
if ( clients[addr].providerAddress != address(0x00) ) {
|
||||||
ProviderAddress = clients[addr].providerAddress;
|
ProviderAddress = clients[addr].providerAddress;
|
||||||
ProviderHeight = clients[addr].providerHeight;
|
ProviderHeight = clients[addr].providerHeight;
|
||||||
ConnectedOn = clients[addr].providerConnected;
|
ConnectedOn = clients[addr].providerConnected;
|
||||||
@ -233,7 +233,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
@admin The admin’s address
|
@admin The admin’s address
|
||||||
*/
|
*/
|
||||||
require( ! providers[msg.sender].data[providers[msg.sender].currentHeight].valid );
|
require( ! providers[msg.sender].data[providers[msg.sender].currentHeight].valid );
|
||||||
require( clients[msg.sender].providerAddress == 0x00 );
|
require( clients[msg.sender].providerAddress == address(0x00) );
|
||||||
require( ! checkICO() );
|
require( ! checkICO() );
|
||||||
if ( priv ) {
|
if ( priv ) {
|
||||||
require( getTokenBalance(msg.sender) >= minFundsForPrivate );
|
require( getTokenBalance(msg.sender) >= minFundsForPrivate );
|
||||||
@ -245,7 +245,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
providers[msg.sender].currentHeight++;
|
providers[msg.sender].currentHeight++;
|
||||||
uint256 currHeight = providers[msg.sender].currentHeight;
|
uint256 currHeight = providers[msg.sender].currentHeight;
|
||||||
providers[msg.sender].data[currHeight].valid = true;
|
providers[msg.sender].data[currHeight].valid = true;
|
||||||
if ( admin == 0x00 ) {
|
if ( admin == address(0x00) ) {
|
||||||
providers[msg.sender].data[currHeight].admin = msg.sender;
|
providers[msg.sender].data[currHeight].admin = msg.sender;
|
||||||
} else {
|
} else {
|
||||||
providers[msg.sender].data[currHeight].admin = admin;
|
providers[msg.sender].data[currHeight].admin = admin;
|
||||||
@ -288,7 +288,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
require( providers[addr].data[currHeight].valid );
|
require( providers[addr].data[currHeight].valid );
|
||||||
require( checkCorrectRate(providers[addr].data[currHeight].priv, rate) );
|
require( checkCorrectRate(providers[addr].data[currHeight].priv, rate) );
|
||||||
require( providers[addr].data[currHeight].admin == msg.sender || msg.sender == addr );
|
require( providers[addr].data[currHeight].admin == msg.sender || msg.sender == addr );
|
||||||
if ( admin != 0x00 ) {
|
if ( admin != address(0x00) ) {
|
||||||
require( msg.sender == addr );
|
require( msg.sender == addr );
|
||||||
providers[addr].data[currHeight].admin = admin;
|
providers[addr].data[currHeight].admin = admin;
|
||||||
}
|
}
|
||||||
@ -419,7 +419,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
*/
|
*/
|
||||||
uint256 currHeight = providers[provider].currentHeight;
|
uint256 currHeight = providers[provider].currentHeight;
|
||||||
require( ! providers[msg.sender].data[currHeight].valid );
|
require( ! providers[msg.sender].data[currHeight].valid );
|
||||||
require( clients[msg.sender].providerAddress == 0x00 );
|
require( clients[msg.sender].providerAddress == address(0x00) );
|
||||||
require( providers[provider].data[currHeight].valid );
|
require( providers[provider].data[currHeight].valid );
|
||||||
if ( providers[provider].data[currHeight].priv ) {
|
if ( providers[provider].data[currHeight].priv ) {
|
||||||
require( providers[provider].data[currHeight].allowedUsers[msg.sender] &&
|
require( providers[provider].data[currHeight].allowedUsers[msg.sender] &&
|
||||||
@ -446,7 +446,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
It is only possible to disconnect those providers who were connected by us before.
|
It is only possible to disconnect those providers who were connected by us before.
|
||||||
*/
|
*/
|
||||||
address provider = clients[msg.sender].providerAddress;
|
address provider = clients[msg.sender].providerAddress;
|
||||||
require( provider != 0x0 );
|
require( provider != address(0x00) );
|
||||||
uint256 currHeight = clients[msg.sender].providerHeight;
|
uint256 currHeight = clients[msg.sender].providerHeight;
|
||||||
bool providerHasClosed = false;
|
bool providerHasClosed = false;
|
||||||
if ( providers[provider].data[currHeight].close > 0 ) {
|
if ( providers[provider].data[currHeight].close > 0 ) {
|
||||||
@ -479,7 +479,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
if ( providers[addr].data[providers[addr].currentHeight].valid ) {
|
if ( providers[addr].data[providers[addr].currentHeight].valid ) {
|
||||||
uint256 a;
|
uint256 a;
|
||||||
(reward, a) = getProviderReward(addr, 0);
|
(reward, a) = getProviderReward(addr, 0);
|
||||||
} else if ( clients[addr].providerAddress != 0x0 ) {
|
} else if ( clients[addr].providerAddress != address(0x00) ) {
|
||||||
reward = getClientReward(0);
|
reward = getClientReward(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -504,14 +504,14 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
address _beneficiary = beneficiary;
|
address _beneficiary = beneficiary;
|
||||||
address _provider = provider;
|
address _provider = provider;
|
||||||
if ( _limit == 0 ) { _limit = gasProtectMaxRounds; }
|
if ( _limit == 0 ) { _limit = gasProtectMaxRounds; }
|
||||||
if ( _beneficiary == 0x00 ) { _beneficiary = msg.sender; }
|
if ( _beneficiary == address(0x00) ) { _beneficiary = msg.sender; }
|
||||||
if ( _provider == 0x00 ) { _provider = msg.sender; }
|
if ( _provider == address(0x00) ) { _provider = msg.sender; }
|
||||||
uint256 clientReward;
|
uint256 clientReward;
|
||||||
uint256 providerReward;
|
uint256 providerReward;
|
||||||
if ( providers[_provider].data[providers[_provider].currentHeight].valid ) {
|
if ( providers[_provider].data[providers[_provider].currentHeight].valid ) {
|
||||||
require( providers[_provider].data[providers[_provider].currentHeight].admin == msg.sender || msg.sender == _provider );
|
require( providers[_provider].data[providers[_provider].currentHeight].admin == msg.sender || msg.sender == _provider );
|
||||||
(providerReward, clientReward) = getProviderReward(_provider, _limit);
|
(providerReward, clientReward) = getProviderReward(_provider, _limit);
|
||||||
} else if ( clients[msg.sender].providerAddress != 0x00 ) {
|
} else if ( clients[msg.sender].providerAddress != address(0x00) ) {
|
||||||
clientReward = getClientReward(_limit);
|
clientReward = getClientReward(_limit);
|
||||||
} else {
|
} else {
|
||||||
throw;
|
throw;
|
||||||
@ -745,7 +745,7 @@ contract provider is module, safeMath, announcementTypes {
|
|||||||
@value Rate of the change.
|
@value Rate of the change.
|
||||||
@neg ype of the change. If it is TRUE then the balance has been decreased if it is FALSE then it has been increased.
|
@neg ype of the change. If it is TRUE then the balance has been decreased if it is FALSE then it has been increased.
|
||||||
*/
|
*/
|
||||||
if ( clients[addr].providerAddress != 0 ) {
|
if ( clients[addr].providerAddress != address(0x00) ) {
|
||||||
checkFloatingSupply(clients[addr].providerAddress, providers[clients[addr].providerAddress].currentHeight, ! neg, value);
|
checkFloatingSupply(clients[addr].providerAddress, providers[clients[addr].providerAddress].currentHeight, ! neg, value);
|
||||||
if (clients[addr].lastSupplyID != currentSchellingRound) {
|
if (clients[addr].lastSupplyID != currentSchellingRound) {
|
||||||
clients[addr].supply[currentSchellingRound] = TEMath(clients[addr].supply[clients[addr].lastSupplyID], value, neg);
|
clients[addr].supply[currentSchellingRound] = TEMath(clients[addr].supply[clients[addr].lastSupplyID], value, neg);
|
||||||
|
@ -37,7 +37,7 @@ contract schellingDB is safeMath, schellingVars {
|
|||||||
*/
|
*/
|
||||||
address private owner;
|
address private owner;
|
||||||
function replaceOwner(address newOwner) external returns(bool) {
|
function replaceOwner(address newOwner) external returns(bool) {
|
||||||
require( owner == 0x00 || msg.sender == owner );
|
require( owner == address(0x00) || msg.sender == owner );
|
||||||
owner = newOwner;
|
owner = newOwner;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -407,7 +407,7 @@ contract schelling is module, announcementTypes, schellingVars {
|
|||||||
uint256 funds = getFunds(msg.sender);
|
uint256 funds = getFunds(msg.sender);
|
||||||
|
|
||||||
address _beneficiary = msg.sender;
|
address _beneficiary = msg.sender;
|
||||||
if (beneficiary != 0x0) { _beneficiary = beneficiary; }
|
if (beneficiary != address(0x00)) { _beneficiary = beneficiary; }
|
||||||
uint256 reward;
|
uint256 reward;
|
||||||
require( voter.rewards > 0 );
|
require( voter.rewards > 0 );
|
||||||
require( voter.status == voterStatus.base );
|
require( voter.status == voterStatus.base );
|
||||||
|
@ -63,9 +63,9 @@ contract token is safeMath, module, announcementTypes {
|
|||||||
@genesisValue Array of balance of genesis addresses
|
@genesisValue Array of balance of genesis addresses
|
||||||
*/
|
*/
|
||||||
super.registerModuleHandler(moduleHandler);
|
super.registerModuleHandler(moduleHandler);
|
||||||
require( dbAddr != 0x00 );
|
require( dbAddr != address(0x00) );
|
||||||
require( icoContractAddr != 0x00 );
|
require( icoContractAddr != address(0x00) );
|
||||||
require( exchangeContractAddress != 0x00 );
|
require( exchangeContractAddress != address(0x00) );
|
||||||
db = tokenDB(dbAddr);
|
db = tokenDB(dbAddr);
|
||||||
icoAddr = icoContractAddr;
|
icoAddr = icoContractAddr;
|
||||||
exchangeAddress = exchangeContractAddress;
|
exchangeAddress = exchangeContractAddress;
|
||||||
@ -325,7 +325,7 @@ contract token is safeMath, module, announcementTypes {
|
|||||||
require( success );
|
require( success );
|
||||||
require( db.balanceOf(from) >= amount + _fee );
|
require( db.balanceOf(from) >= amount + _fee );
|
||||||
}
|
}
|
||||||
require( from != 0x00 && to != 0x00 && to != 0xa636a97578d26a3b76b060bbc18226d954cf3757 );
|
require( from != address(0x00) && to != address(0x00) && to != 0xa636A97578d26A3b76B060Bbc18226d954cf3757 );
|
||||||
require( ( ! isICO) || genesis[from] );
|
require( ( ! isICO) || genesis[from] );
|
||||||
require( db.decrease(from, amount) );
|
require( db.decrease(from, amount) );
|
||||||
require( db.increase(to, amount) );
|
require( db.increase(to, amount) );
|
||||||
@ -374,7 +374,7 @@ contract token is safeMath, module, announcementTypes {
|
|||||||
address _schellingAddr;
|
address _schellingAddr;
|
||||||
(_success, _found, _schellingAddr) = moduleHandler(moduleHandlerAddress).getModuleAddressByName('Schelling');
|
(_success, _found, _schellingAddr) = moduleHandler(moduleHandlerAddress).getModuleAddressByName('Schelling');
|
||||||
require( _success );
|
require( _success );
|
||||||
if ( _schellingAddr != 0x00 && _found) {
|
if ( _schellingAddr != address(0x00) && _found) {
|
||||||
require( db.decrease(owner, _forSchelling) );
|
require( db.decrease(owner, _forSchelling) );
|
||||||
require( db.increase(_schellingAddr, _forSchelling) );
|
require( db.increase(_schellingAddr, _forSchelling) );
|
||||||
_burn(owner, _forBurn);
|
_burn(owner, _forBurn);
|
||||||
@ -424,7 +424,7 @@ contract token is safeMath, module, announcementTypes {
|
|||||||
@value Quantity
|
@value Quantity
|
||||||
*/
|
*/
|
||||||
require( db.increase(owner, value) );
|
require( db.increase(owner, value) );
|
||||||
require( moduleHandler(moduleHandlerAddress).broadcastTransfer(0x00, owner, value) );
|
require( moduleHandler(moduleHandlerAddress).broadcastTransfer(address(0x00), owner, value) );
|
||||||
if ( isICO ) {
|
if ( isICO ) {
|
||||||
require( ico(icoAddr).setInterestDB(owner, db.balanceOf(owner)) );
|
require( ico(icoAddr).setInterestDB(owner, db.balanceOf(owner)) );
|
||||||
}
|
}
|
||||||
@ -453,7 +453,7 @@ contract token is safeMath, module, announcementTypes {
|
|||||||
@value Quantity
|
@value Quantity
|
||||||
*/
|
*/
|
||||||
require( db.decrease(owner, value) );
|
require( db.decrease(owner, value) );
|
||||||
require( moduleHandler(moduleHandlerAddress).broadcastTransfer(owner, 0x00, value) );
|
require( moduleHandler(moduleHandlerAddress).broadcastTransfer(owner, address(0x00), value) );
|
||||||
Burn(owner, value);
|
Burn(owner, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ contract Event {
|
|||||||
public
|
public
|
||||||
{
|
{
|
||||||
// Validate input
|
// Validate input
|
||||||
require(address(_collateralToken) != 0 && address(_oracle) != 0 && outcomeCount >= 2);
|
require(address(_collateralToken) != address(0) && address(_oracle) != address(0) && outcomeCount >= 2);
|
||||||
collateralToken = _collateralToken;
|
collateralToken = _collateralToken;
|
||||||
oracle = _oracle;
|
oracle = _oracle;
|
||||||
// Create an outcome token for each outcome
|
// Create an outcome token for each outcome
|
||||||
|
@ -37,7 +37,7 @@ contract EventFactory {
|
|||||||
{
|
{
|
||||||
bytes32 eventHash = keccak256(collateralToken, oracle, outcomeCount);
|
bytes32 eventHash = keccak256(collateralToken, oracle, outcomeCount);
|
||||||
// Event should not exist yet
|
// Event should not exist yet
|
||||||
require(address(categoricalEvents[eventHash]) == 0);
|
require(address(categoricalEvents[eventHash]) == address(0));
|
||||||
// Create event
|
// Create event
|
||||||
eventContract = new CategoricalEvent(
|
eventContract = new CategoricalEvent(
|
||||||
collateralToken,
|
collateralToken,
|
||||||
@ -65,7 +65,7 @@ contract EventFactory {
|
|||||||
{
|
{
|
||||||
bytes32 eventHash = keccak256(collateralToken, oracle, lowerBound, upperBound);
|
bytes32 eventHash = keccak256(collateralToken, oracle, lowerBound, upperBound);
|
||||||
// Event should not exist yet
|
// Event should not exist yet
|
||||||
require(address(scalarEvents[eventHash]) == 0);
|
require(address(scalarEvents[eventHash]) == address(0));
|
||||||
// Create event
|
// Create event
|
||||||
eventContract = new ScalarEvent(
|
eventContract = new ScalarEvent(
|
||||||
collateralToken,
|
collateralToken,
|
||||||
|
@ -81,9 +81,9 @@ contract Campaign {
|
|||||||
public
|
public
|
||||||
{
|
{
|
||||||
// Validate input
|
// Validate input
|
||||||
require( address(_eventContract) != 0
|
require( address(_eventContract) != address(0)
|
||||||
&& address(_marketFactory) != 0
|
&& address(_marketFactory) != address(0)
|
||||||
&& address(_marketMaker) != 0
|
&& address(_marketMaker) != address(0)
|
||||||
&& _fee < FEE_RANGE
|
&& _fee < FEE_RANGE
|
||||||
&& _funding > 0
|
&& _funding > 0
|
||||||
&& now < _deadline);
|
&& now < _deadline);
|
||||||
|
@ -42,7 +42,7 @@ contract StandardMarket is Market {
|
|||||||
public
|
public
|
||||||
{
|
{
|
||||||
// Validate inputs
|
// Validate inputs
|
||||||
require(address(_eventContract) != 0 && address(_marketMaker) != 0 && _fee < FEE_RANGE);
|
require(address(_eventContract) != address(0) && address(_marketMaker) != address(0) && _fee < FEE_RANGE);
|
||||||
creator = _creator;
|
creator = _creator;
|
||||||
createdAtBlock = block.number;
|
createdAtBlock = block.number;
|
||||||
eventContract = _eventContract;
|
eventContract = _eventContract;
|
||||||
|
@ -36,7 +36,7 @@ contract FutarchyOracleFactory {
|
|||||||
function FutarchyOracleFactory(EventFactory _eventFactory)
|
function FutarchyOracleFactory(EventFactory _eventFactory)
|
||||||
public
|
public
|
||||||
{
|
{
|
||||||
require(address(_eventFactory) != 0);
|
require(address(_eventFactory) != address(0));
|
||||||
eventFactory = _eventFactory;
|
eventFactory = _eventFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ contract MajorityOracle is Oracle {
|
|||||||
require(_oracles.length > 2);
|
require(_oracles.length > 2);
|
||||||
for (uint i = 0; i < _oracles.length; i++)
|
for (uint i = 0; i < _oracles.length; i++)
|
||||||
// Oracle address cannot be null
|
// Oracle address cannot be null
|
||||||
require(address(_oracles[i]) != 0);
|
require(address(_oracles[i]) != address(0));
|
||||||
oracles = _oracles;
|
oracles = _oracles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,8 +57,8 @@ contract UltimateOracle is Oracle {
|
|||||||
public
|
public
|
||||||
{
|
{
|
||||||
// Validate inputs
|
// Validate inputs
|
||||||
require( address(_forwardedOracle) != 0
|
require( address(_forwardedOracle) != address(0)
|
||||||
&& address(_collateralToken) != 0
|
&& address(_collateralToken) != address(0)
|
||||||
&& _spreadMultiplier >= 2
|
&& _spreadMultiplier >= 2
|
||||||
&& _challengePeriod > 0
|
&& _challengePeriod > 0
|
||||||
&& _challengeAmount > 0
|
&& _challengeAmount > 0
|
||||||
|
@ -48,7 +48,7 @@ contract Bounty is PullPayment, Destructible {
|
|||||||
*/
|
*/
|
||||||
function claim(Target target) {
|
function claim(Target target) {
|
||||||
address researcher = researchers[target];
|
address researcher = researchers[target];
|
||||||
if (researcher == 0) {
|
if (researcher == address(0)) {
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
// Check Target contract invariants
|
// Check Target contract invariants
|
||||||
|
@ -67,7 +67,7 @@ contract MultisigWallet is Multisig, Shareable, DayLimit {
|
|||||||
}
|
}
|
||||||
// determine our operation hash.
|
// determine our operation hash.
|
||||||
_r = keccak256(msg.data, block.number);
|
_r = keccak256(msg.data, block.number);
|
||||||
if (!confirm(_r) && txs[_r].to == 0) {
|
if (!confirm(_r) && txs[_r].to == address(0)) {
|
||||||
txs[_r].to = _to;
|
txs[_r].to = _to;
|
||||||
txs[_r].value = _value;
|
txs[_r].value = _value;
|
||||||
txs[_r].data = _data;
|
txs[_r].data = _data;
|
||||||
@ -81,7 +81,7 @@ contract MultisigWallet is Multisig, Shareable, DayLimit {
|
|||||||
* @param _h The transaction hash to approve.
|
* @param _h The transaction hash to approve.
|
||||||
*/
|
*/
|
||||||
function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
|
function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
|
||||||
if (txs[_h].to != 0) {
|
if (txs[_h].to != address(0)) {
|
||||||
if (!txs[_h].to.call.value(txs[_h].value)(txs[_h].data)) {
|
if (!txs[_h].to.call.value(txs[_h].value)(txs[_h].data)) {
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ contract Crowdsale {
|
|||||||
require(_startBlock >= block.number);
|
require(_startBlock >= block.number);
|
||||||
require(_endBlock >= _startBlock);
|
require(_endBlock >= _startBlock);
|
||||||
require(_rate > 0);
|
require(_rate > 0);
|
||||||
require(_wallet != 0x0);
|
require(_wallet != address(0x0));
|
||||||
|
|
||||||
token = createTokenContract();
|
token = createTokenContract();
|
||||||
startBlock = _startBlock;
|
startBlock = _startBlock;
|
||||||
@ -67,7 +67,7 @@ contract Crowdsale {
|
|||||||
|
|
||||||
// low level token purchase function
|
// low level token purchase function
|
||||||
function buyTokens(address beneficiary) payable {
|
function buyTokens(address beneficiary) payable {
|
||||||
require(beneficiary != 0x0);
|
require(beneficiary != address(0x0));
|
||||||
require(validPurchase());
|
require(validPurchase());
|
||||||
|
|
||||||
uint256 weiAmount = msg.value;
|
uint256 weiAmount = msg.value;
|
||||||
|
@ -23,7 +23,7 @@ contract RefundVault is Ownable {
|
|||||||
event Refunded(address indexed beneficiary, uint256 weiAmount);
|
event Refunded(address indexed beneficiary, uint256 weiAmount);
|
||||||
|
|
||||||
function RefundVault(address _wallet) {
|
function RefundVault(address _wallet) {
|
||||||
require(_wallet != 0x0);
|
require(_wallet != address(0x0));
|
||||||
wallet = _wallet;
|
wallet = _wallet;
|
||||||
state = State.Active;
|
state = State.Active;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,6 @@ contract Claimable is Ownable {
|
|||||||
*/
|
*/
|
||||||
function claimOwnership() onlyPendingOwner {
|
function claimOwnership() onlyPendingOwner {
|
||||||
owner = pendingOwner;
|
owner = pendingOwner;
|
||||||
pendingOwner = 0x0;
|
pendingOwner = address(0x0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ contract DelayedClaimable is Claimable {
|
|||||||
if ((block.number > end) || (block.number < start))
|
if ((block.number > end) || (block.number < start))
|
||||||
throw;
|
throw;
|
||||||
owner = pendingOwner;
|
owner = pendingOwner;
|
||||||
pendingOwner = 0x0;
|
pendingOwner = address(0x0);
|
||||||
end = 0;
|
end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ contract GlobalRegistrar is Registrar, AuctionSystem {
|
|||||||
record.renewalDate = now + c_renewalInterval;
|
record.renewalDate = now + c_renewalInterval;
|
||||||
record.owner = auction.highestBidder;
|
record.owner = auction.highestBidder;
|
||||||
Changed(_name);
|
Changed(_name);
|
||||||
if (previousOwner != 0) {
|
if (previousOwner != 0x0000000000000000000000000000000000000000) {
|
||||||
if (!record.owner.send(auction.sumOfBids - auction.highestBid / 100))
|
if (!record.owner.send(auction.sumOfBids - auction.highestBid / 100))
|
||||||
throw;
|
throw;
|
||||||
} else {
|
} else {
|
||||||
@ -143,7 +143,7 @@ contract GlobalRegistrar is Registrar, AuctionSystem {
|
|||||||
bid(_name, msg.sender, msg.value);
|
bid(_name, msg.sender, msg.value);
|
||||||
} else {
|
} else {
|
||||||
Record record = m_toRecord[_name];
|
Record record = m_toRecord[_name];
|
||||||
if (record.owner != 0)
|
if (record.owner != 0x0000000000000000000000000000000000000000)
|
||||||
throw;
|
throw;
|
||||||
m_toRecord[_name].owner = msg.sender;
|
m_toRecord[_name].owner = msg.sender;
|
||||||
Changed(_name);
|
Changed(_name);
|
||||||
|
@ -76,7 +76,7 @@ contract FixedFeeRegistrar is Registrar {
|
|||||||
|
|
||||||
function reserve(string _name) payable {
|
function reserve(string _name) payable {
|
||||||
Record rec = m_record(_name);
|
Record rec = m_record(_name);
|
||||||
if (rec.owner == 0 && msg.value >= c_fee) {
|
if (rec.owner == 0x0000000000000000000000000000000000000000 && msg.value >= c_fee) {
|
||||||
rec.owner = msg.sender;
|
rec.owner = msg.sender;
|
||||||
Changed(_name);
|
Changed(_name);
|
||||||
}
|
}
|
||||||
|
@ -399,7 +399,7 @@ contract Wallet is multisig, multiowned, daylimit {
|
|||||||
}
|
}
|
||||||
// determine our operation hash.
|
// determine our operation hash.
|
||||||
_r = keccak256(msg.data, block.number);
|
_r = keccak256(msg.data, block.number);
|
||||||
if (!confirm(_r) && m_txs[_r].to == 0) {
|
if (!confirm(_r) && m_txs[_r].to == 0x0000000000000000000000000000000000000000) {
|
||||||
m_txs[_r].to = _to;
|
m_txs[_r].to = _to;
|
||||||
m_txs[_r].value = _value;
|
m_txs[_r].value = _value;
|
||||||
m_txs[_r].data = _data;
|
m_txs[_r].data = _data;
|
||||||
@ -410,7 +410,7 @@ contract Wallet is multisig, multiowned, daylimit {
|
|||||||
// confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
|
// confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
|
||||||
// to determine the body of the transaction from the hash provided.
|
// to determine the body of the transaction from the hash provided.
|
||||||
function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
|
function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
|
||||||
if (m_txs[_h].to != 0) {
|
if (m_txs[_h].to != 0x0000000000000000000000000000000000000000) {
|
||||||
m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
|
m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
|
||||||
MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
|
MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
|
||||||
delete m_txs[_h];
|
delete m_txs[_h];
|
||||||
|
@ -61,6 +61,13 @@ function test_truffle
|
|||||||
# Replace fixed-version pragmas in Gnosis (part of Consensys best practice)
|
# Replace fixed-version pragmas in Gnosis (part of Consensys best practice)
|
||||||
find contracts test -name '*.sol' -type f -print0 | xargs -0 sed -i -e 's/pragma solidity 0/pragma solidity ^0/'
|
find contracts test -name '*.sol' -type f -print0 | xargs -0 sed -i -e 's/pragma solidity 0/pragma solidity ^0/'
|
||||||
fi
|
fi
|
||||||
|
assertsol="node_modules/truffle/build/Assert.sol"
|
||||||
|
if [ -f "$assertsol" ]
|
||||||
|
then
|
||||||
|
echo "Replace Truffle's Assert.sol with a known good version"
|
||||||
|
rm "$assertsol"
|
||||||
|
wget https://raw.githubusercontent.com/trufflesuite/truffle-core/ef31bcaa15dbd9bd0f6a0070a5c63f271cde2dbc/lib/testing/Assert.sol -o "$assertsol"
|
||||||
|
fi
|
||||||
npm run test
|
npm run test
|
||||||
)
|
)
|
||||||
rm -rf "$DIR"
|
rm -rf "$DIR"
|
||||||
|
@ -279,9 +279,9 @@ BOOST_AUTO_TEST_CASE(storage_array_dyn)
|
|||||||
address[] addr;
|
address[] addr;
|
||||||
event E(address[] a);
|
event E(address[] a);
|
||||||
function f() public {
|
function f() public {
|
||||||
addr.push(1);
|
addr.push(0x0000000000000000000000000000000000000001);
|
||||||
addr.push(2);
|
addr.push(0x0000000000000000000000000000000000000002);
|
||||||
addr.push(3);
|
addr.push(0x0000000000000000000000000000000000000003);
|
||||||
E(addr);
|
E(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -433,15 +433,15 @@ BOOST_AUTO_TEST_CASE(storage_value_vars)
|
|||||||
function f(uint x) public {
|
function f(uint x) public {
|
||||||
if (x == 0)
|
if (x == 0)
|
||||||
{
|
{
|
||||||
a = 100;
|
a = 0x0000000000000000000000000000000000000100;
|
||||||
b = true;
|
b = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a = 200;
|
a = 0x0000000000000000000000000000000000000200;
|
||||||
b = false;
|
b = false;
|
||||||
}
|
}
|
||||||
assert(a > 0 && b);
|
assert(a > 0x0000000000000000000000000000000000000000 && b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
@ -464,19 +464,19 @@ BOOST_AUTO_TEST_CASE(storage_value_vars)
|
|||||||
function f(uint x) public {
|
function f(uint x) public {
|
||||||
if (x == 0)
|
if (x == 0)
|
||||||
{
|
{
|
||||||
a = 100;
|
a = 0x0000000000000000000000000000000000000100;
|
||||||
b = true;
|
b = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a = 200;
|
a = 0x0000000000000000000000000000000000000200;
|
||||||
b = false;
|
b = false;
|
||||||
}
|
}
|
||||||
assert(b == (a < 200));
|
assert(b == (a < 0x0000000000000000000000000000000000000200));
|
||||||
}
|
}
|
||||||
|
|
||||||
function g() public view {
|
function g() public view {
|
||||||
require(a < 100);
|
require(a < 0x0000000000000000000000000000000000000100);
|
||||||
assert(c >= 0);
|
assert(c >= 0);
|
||||||
}
|
}
|
||||||
address a;
|
address a;
|
||||||
|
@ -9460,8 +9460,8 @@ BOOST_AUTO_TEST_CASE(failing_ecrecover_invalid_input_proper)
|
|||||||
0, // invalid v value
|
0, // invalid v value
|
||||||
0x6944c77849b18048f6abe0db8084b0d0d0689cdddb53d2671c36967b58691ad4,
|
0x6944c77849b18048f6abe0db8084b0d0d0689cdddb53d2671c36967b58691ad4,
|
||||||
0xef4f06ba4f78319baafd0424365777241af4dfd3da840471b4b4b087b7750d0d,
|
0xef4f06ba4f78319baafd0424365777241af4dfd3da840471b4b4b087b7750d0d,
|
||||||
0xca35b7d915458ef540ade6068dfe2f44e8fa733c,
|
0x00ca35b7d915458ef540ade6068dfe2f44e8fa733c,
|
||||||
0xca35b7d915458ef540ade6068dfe2f44e8fa733c
|
0x00ca35b7d915458ef540ade6068dfe2f44e8fa733c
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s, uint blockExpired, bytes32 salt)
|
function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s, uint blockExpired, bytes32 salt)
|
||||||
|
@ -490,7 +490,7 @@ BOOST_AUTO_TEST_CASE(intermediately_overflowing_literals)
|
|||||||
// have been applied
|
// have been applied
|
||||||
char const* sourceCode = R"(
|
char const* sourceCode = R"(
|
||||||
contract test {
|
contract test {
|
||||||
function f() { var x = (0xffffffffffffffffffffffffffffffffffffffff * 0xffffffffffffffffffffffffff01) & 0xbf; }
|
function f() { var x = (0x00ffffffffffffffffffffffffffffffffffffffff * 0xffffffffffffffffffffffffff01) & 0xbf; }
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
bytes code = compileFirstExpression(sourceCode);
|
bytes code = compileFirstExpression(sourceCode);
|
||||||
|
@ -4,9 +4,9 @@ contract test {
|
|||||||
x;
|
x;
|
||||||
}
|
}
|
||||||
function g() public {
|
function g() public {
|
||||||
suicide(1);
|
suicide(0x0000000000000000000000000000000000000001);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// TypeError: (58-64): "sha3" has been deprecated in favour of "keccak256"
|
// TypeError: (58-64): "sha3" has been deprecated in favour of "keccak256"
|
||||||
// TypeError: (99-109): "suicide" has been deprecated in favour of "selfdestruct"
|
// TypeError: (99-150): "suicide" has been deprecated in favour of "selfdestruct"
|
||||||
|
@ -5,4 +5,4 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning: (64-106): This looks like an address but has an invalid checksum. If this is not used as an address, please prepend '00'. Correct checksummed address: '0xfA0bFc97E48458494Ccd857e1A85DC91F7F0046E'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
// SyntaxError: (64-106): This looks like an address but has an invalid checksum. Correct checksummed address: "0xfA0bFc97E48458494Ccd857e1A85DC91F7F0046E". If this is not used as an address, please prepend '00'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
||||||
|
@ -5,4 +5,4 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning: (64-106): This looks like an address but has an invalid checksum. If this is not used as an address, please prepend '00'. Correct checksummed address: '0xfA0bFc97E48458494Ccd857e1A85DC91F7F0046E'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
// SyntaxError: (64-106): This looks like an address but has an invalid checksum. Correct checksummed address: "0xfA0bFc97E48458494Ccd857e1A85DC91F7F0046E". If this is not used as an address, please prepend '00'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
||||||
|
@ -5,4 +5,4 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning: (64-105): This looks like an address but has an invalid checksum. If this is not used as an address, please prepend '00'. Correct checksummed address: '0x0A0BfC97E48458494ccD857e1A85Dc91f7f0046e'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
// SyntaxError: (64-105): This looks like an address but is not exactly 40 hex digits. It is 39 hex digits. If this is not used as an address, please prepend '00'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
||||||
|
@ -5,5 +5,4 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning: (64-107): This looks like an address but has an invalid checksum. If this is not used as an address, please prepend '00'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
// SyntaxError: (64-107): This looks like an address but is not exactly 40 hex digits. It is 41 hex digits. If this is not used as an address, please prepend '00'. For more information please see https://solidity.readthedocs.io/en/develop/types.html#address-literals
|
||||||
// TypeError: (52-107): Type int_const 2284...(42 digits omitted)...9360 is not implicitly convertible to expected type address.
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
contract test {
|
contract test {
|
||||||
function fun(uint256 a) returns (address b) {
|
function fun(uint256 a) returns (uint8 b) {
|
||||||
if (a < 0) b = 0x67; else if (a == 0) b = 0x12; else b = 0x78;
|
if (a < 0) b = 0x67; else if (a == 0) b = 0x12; else b = 0x78;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning: (20-142): No visibility specified. Defaulting to "public".
|
// Warning: (20-140): No visibility specified. Defaulting to "public".
|
||||||
// Warning: (20-142): Function state mutability can be restricted to pure
|
// Warning: (20-140): Function state mutability can be restricted to pure
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
contract c {
|
contract c {
|
||||||
modifier mod { if (msg.sender == 0) _; }
|
modifier mod { if (msg.sender == 0x0000000000000000000000000000000000000000) _; }
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user