mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add blockhash to Solidity.
Autopadding fix.
This commit is contained in:
parent
80eec8b308
commit
911916beb7
@ -282,6 +282,13 @@ bool ExpressionCompiler::visit(FunctionCall const& _functionCall)
|
||||
m_context << u256(32) << u256(0) << eth::logInstruction(logNumber);
|
||||
break;
|
||||
}
|
||||
case Location::BLOCKHASH:
|
||||
{
|
||||
arguments[0]->accept(*this);
|
||||
appendTypeConversion(*arguments[0]->getType(), *function.getParameterTypes()[0], true);
|
||||
m_context << eth::Instruction::BLOCKHASH;
|
||||
break;
|
||||
}
|
||||
case Location::ECRECOVER:
|
||||
case Location::SHA256:
|
||||
case Location::RIPEMD160:
|
||||
|
@ -656,8 +656,8 @@ MagicType::MagicType(MagicType::Kind _kind):
|
||||
{
|
||||
case Kind::BLOCK:
|
||||
m_members = MemberList({{"coinbase", make_shared<IntegerType>(0, IntegerType::Modifier::ADDRESS)},
|
||||
{"timestamp", make_shared<IntegerType >(256)},
|
||||
{"prevhash", make_shared<IntegerType>(256, IntegerType::Modifier::HASH)},
|
||||
{"timestamp", make_shared<IntegerType>(256)},
|
||||
{"blockhash", make_shared<FunctionType>(strings{"uint"}, strings{"hash"}, FunctionType::Location::BLOCKHASH)},
|
||||
{"difficulty", make_shared<IntegerType>(256)},
|
||||
{"number", make_shared<IntegerType>(256)},
|
||||
{"gaslimit", make_shared<IntegerType>(256)}});
|
||||
|
2
Types.h
2
Types.h
@ -348,7 +348,7 @@ public:
|
||||
/// INTERNAL: jump tag, EXTERNAL: contract address + function index,
|
||||
/// BARE: contract address (non-abi contract call)
|
||||
/// OTHERS: special virtual function, nothing on the stack
|
||||
enum class Location { INTERNAL, EXTERNAL, SEND, SHA3, SUICIDE, ECRECOVER, SHA256, RIPEMD160, LOG0, LOG1, LOG2, LOG3, LOG4, BARE };
|
||||
enum class Location { INTERNAL, EXTERNAL, SEND, SHA3, SUICIDE, ECRECOVER, SHA256, RIPEMD160, LOG0, LOG1, LOG2, LOG3, LOG4, BLOCKHASH, BARE };
|
||||
|
||||
virtual Category getCategory() const override { return Category::FUNCTION; }
|
||||
explicit FunctionType(FunctionDefinition const& _function, bool _isInternal = true);
|
||||
|
Loading…
Reference in New Issue
Block a user