From 433aebb7c91acf6d364acd76f6018dc1b4f847af Mon Sep 17 00:00:00 2001 From: Wei-Ning Huang Date: Thu, 18 Oct 2018 11:38:05 +0800 Subject: Add opcode RAND support DEXON has a built-in on chain random oracle that allow one to retrieve a random variable. Add `rand` solidity variable is introduced to load the random variable onto the stack. --- libsolidity/analysis/GlobalContext.cpp | 1 + libsolidity/analysis/ViewPureChecker.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'libsolidity/analysis') diff --git a/libsolidity/analysis/GlobalContext.cpp b/libsolidity/analysis/GlobalContext.cpp index 756bb540..347cf943 100644 --- a/libsolidity/analysis/GlobalContext.cpp +++ b/libsolidity/analysis/GlobalContext.cpp @@ -51,6 +51,7 @@ m_magicVariables(vector>{ make_shared("msg", make_shared(MagicType::Kind::Message)), make_shared("mulmod", make_shared(strings{"uint256", "uint256", "uint256"}, strings{"uint256"}, FunctionType::Kind::MulMod, false, StateMutability::Pure)), make_shared("now", make_shared(256)), + make_shared("rand", make_shared(256)), make_shared("require", make_shared(strings{"bool"}, strings{}, FunctionType::Kind::Require, false, StateMutability::Pure)), make_shared("require", make_shared(strings{"bool", "string memory"}, strings{}, FunctionType::Kind::Require, false, StateMutability::Pure)), make_shared("revert", make_shared(strings(), strings(), FunctionType::Kind::Revert, false, StateMutability::Pure)), diff --git a/libsolidity/analysis/ViewPureChecker.cpp b/libsolidity/analysis/ViewPureChecker.cpp index d9843012..610ba617 100644 --- a/libsolidity/analysis/ViewPureChecker.cpp +++ b/libsolidity/analysis/ViewPureChecker.cpp @@ -210,7 +210,7 @@ void ViewPureChecker::endVisit(Identifier const& _identifier) mutability = StateMutability::View; break; case Type::Category::Integer: - solAssert(_identifier.name() == "now", ""); + solAssert(_identifier.name() == "now" || _identifier.name() == "rand", ""); mutability = StateMutability::View; break; default: -- cgit v1.2.3