Test Auth.tx_hash compilation

This commit is contained in:
Hans Svensson 2019-03-26 13:31:33 +01:00
parent b2a0c9d8be
commit fd6dac2257
2 changed files with 21 additions and 1 deletions

View File

@ -97,7 +97,8 @@ compilable_contracts() ->
"variant_types",
"state_handling",
"events",
"include"
"include",
"basic_auth"
].
%% Contracts that should produce type errors

View File

@ -0,0 +1,19 @@
// Contract replicating "normal" Aeternity authentication
contract BasicAuth =
record state = { nonce : int, owner : address }
function init() = { nonce = 1, owner = Call.caller }
function authorize(n : int, s : signature) : bool =
require(n >= state.nonce, "Nonce too low")
require(n =< state.nonce, "Nonce too high")
put(state{ nonce = n + 1 })
switch(Auth.tx_hash)
None => abort("Not in Auth context")
Some(tx_hash) => Crypto.ecverify(to_sign(tx_hash, n), state.owner, s)
function to_sign(h : hash, n : int) =
Crypto.blake2b((h, n))
private function require(b : bool, err : string) =
if(!b) abort(err)