From dbf4f6bdb2f48a26e0cf22726253af29607e56a0 Mon Sep 17 00:00:00 2001 From: Craig Everett Date: Tue, 12 Nov 2024 18:52:08 +0900 Subject: [PATCH] Updates necessary for the nwe poop --- ebin/hakuzaru.beam | Bin 1396 -> 1600 bytes ebin/hz.beam | Bin 56220 -> 57208 bytes ebin/hz_fetcher.beam | Bin 15712 -> 15704 bytes src/hakuzaru.erl | 4 + src/hz.erl | 194 +++++++++++++++++++------------------------ src/hz_fetcher.erl | 2 - 6 files changed, 90 insertions(+), 110 deletions(-) diff --git a/ebin/hakuzaru.beam b/ebin/hakuzaru.beam index ee022be029b8fc0e3c67613c9e9485256f3de02b..1342f29dfb08508ddb1268896fe2769e60b0d83a 100644 GIT binary patch delta 950 zcmeyub%2M%%|FPHfq~6pBgbXN`fbfQ3=9mc8BFEOWyN{f46FuvCVGZIE?Z)0Nk)EA zHiNQrQDSDgf@@i7QEEwvf=zNNgym3DTw0Wwn5malU)~l}V}ocyj;)1N*6pIdiA_=FfHzXk(Oqbfj;VOV*{}$6TR>sjTXGm*ZBg3Jv{w z$@%I(29smin;Rmx=-gA;zpuH|P{*SE*_N5>=T^>_eO&(JfcJe2FsE6=gq~dfAxP-n!q{#W5DM9#S2b9>^FVr((y38 zUu5}urLz{SuUJlsZ*`F8mZ{RId{FYT`~Pag15)gQUp?js$^3o(KK}aqxwEs6tydOk zS^e<1#J$;q^4F#m-fUMn7*j7WgcY&8T>@tVwkNYu2@! z_jDGYxg;I=e8O*`M?bG-e`2!Sxvs*aYenN5olQG5Vz$ex$YfS2t+;u9$;_h`(GxFD zj1|cF`ou6IqI>UzWhW+em?X!0PA)iSAyqAKJa1;v&fd3c8pXvj|0+(%yK-l0U447{ zq40yx&YP$5w|_93C0)>|zuj(wrmlXIj%uqphnK8Phmr~3!6W~5{K9e;-xKiD`nzcR zxvj6PYIm*Hi2NG!=9@x(5M#=92HS(-KW|*fe>(a0?H@NPt=HBR`Ood=eO~?JhUHE( zJF`7uKNc))?dM&b{v+n;ex0k8t1H&s`p_d%Z?jlx-o-i_X1-6`06Sd8QHG|`Kp zY?p1djn?|E@i0ygShY7hqwBn!Y3_;g@O|NXSKhmOE#g%P`?M{0_A~7ljb2z*UgM(K zW&Od~;|7!O{0~R-XH9qC?QgoPR4U6>syfh2eewhO;8>CE delta 763 zcmVJMo&^P000GSu?W)vCq{#800002XaaWwc5`lQ00001ZV&)iXyRc= zj&yPAlJOelOLJ9flX3zn0fdvB0vG`?leGdl7cehqZ*65SV`X+_a%FUMFLq;dFL7{j zlK}%Fe`SME000K|c$|HeYi^rB5XX5KLSiRPBDJa1sI-bBT1Rr^_5{5`djK@X>i}M} zXj!~%PTv7+9t*^u*7Mq#|8GZxro7ycb^hW<$(H$tmAoOG`moLfhd}rN+mO(pnxbiE~k*DGzvgOEKwsbi*n>|%D5=nGeSdJnE)<8!{a0qECnrAv#v(7j5kN3ng`&OMcTg!WTl!->F;@y;(2@=g5tN!6@Chk* z2ezagP{=ba&AplCzcn=o-vpLzbQoVb)ZuN`aF4wl}=6F|CvhBHR-b~S?0?6$E zI>J}^xG){$Q`m?2xJ5gIdlYX zomOB=+y5g#kdsi&9Y0Wt>JCGigl*CE6JLDUyu4^WYv|Uao#sSIK=TcGj{gIGeiNAh t002yBZe;)f05t#r0000000000ll}z^4I2p@2_p$42`ULI2{Drw1}WP#Sc?Dv diff --git a/ebin/hz.beam b/ebin/hz.beam index 95f036e5379c2c68c0bbcd2bcd525e6d620324bd..90c802ed5229f16e7bd4dea6db3362d6817566b2 100644 GIT binary patch literal 57208 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 diff --git a/ebin/hz_fetcher.beam b/ebin/hz_fetcher.beam index 02f0ae3a2219e9adcc49b0a68422963c28d49467..3cfdbbd1130007c34505a058f585617f5236532d 100644 GIT binary patch delta 8727 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 diff --git a/src/hakuzaru.erl b/src/hakuzaru.erl index 74e9cf5..10adf29 100644 --- a/src/hakuzaru.erl +++ b/src/hakuzaru.erl @@ -6,6 +6,10 @@ %%% @end -module(hakuzaru). +-vsn("0.4.1"). +-author("Craig Everett "). +-copyright("Craig Everett "). +-license("GPL-3.0-or-later"). -behavior(application). diff --git a/src/hz.erl b/src/hz.erl index f9e28c5..241beaa 100644 --- a/src/hz.erl +++ b/src/hz.erl @@ -4,24 +4,21 @@ %%% This module is the high-level interface to the Gajumaru blockchain system. %%% The interface is split into three main sections: %%% - Get/Set admin functions -%%% - AE node JSON query interface functions -%%% - AE contract call and serialization interface functions +%%% - Node JSON query interface functions +%%% - Contract call and serialization interface functions %%% %%% The get/set admin functions are for setting or checking things like the Gajumaru -%%% "network ID" and list of addresses of AE nodes you want to use for answering -%%% queries to the blockchain (usually you will run these nodes in your own back end). +%%% "network ID" and list of addresses of nodes you want to use for answering +%%% queries to the blockchain. %%% %%% The JSON query interface functions are the blockchain query functions themselves %%% which are translated to network queries and return Erlang messages as responses. %%% %%% The contract call and serialization interface are the functions used to convert %%% a desired call to a smart contract on the chain to call data serialized in a form -%%% that an Gajumaru compatible wallet, SDK or (in the case of a web service) in-page -%%% code based on a JS library such as Sidekick (another component of Hakuzaru) can -%%% use to generate signature requests and signed transaction objects for submission -%%% to an Gajumaru network node for inclusion in the transaction mempool. +%%% that a Gajumaru compatible wallet or library can sign and submit to a Gajumaru node. %%% -%%% This module also includes the standard OTP "application" interface and start/stop +%%% This module does not implement the OTP application behavior. %%% helper functions. %%% @end @@ -37,7 +34,7 @@ tls/0, tls/1, timeout/0, timeout/1]). -% AE node JSON query interface functions +% Node JSON query interface functions -export([top_height/0, top_block/0, kb_current/0, kb_current_hash/0, kb_current_height/0, kb_pending/0, @@ -53,18 +50,16 @@ post_tx/1, contract/1, contract_code/1, contract_poi/1, -% oracle/1, oracle_queries/1, oracle_queries_by_id/2, name/1, % channel/1, peer_pubkey/0, status/0, status_chainends/0]). -% AE contract call and serialization interface functions +% Contract call and serialization interface functions -export([read_aci/1, min_gas/0, min_gas_price/0, - min_fee/0, contract_create/3, contract_create/8, prepare_contract/1, @@ -154,7 +149,6 @@ % "call_data" => contract_byte_array(), % "code" => contract_byte_array(), % "deposit" => non_neg_integer(), -% "fee" => pos_integer(), % "gas" => pos_integer(), % "gas_price" => pos_integer(), % "nonce" => pos_integer(), @@ -646,7 +640,7 @@ dry_run(TX, Accounts, KBHash) -> txs => [#{tx => TXB}], tx_events => true}, JSON = zj:binary_encode(DryData), - request("/v3/dry-run", JSON). + request("/v3/dry_run", JSON). -spec decode_bytearray_fate(EncodedStr) -> {ok, Result} | {error, Reason} when EncodedStr :: binary() | string(), @@ -718,15 +712,17 @@ tx_info(ID) -> result(request(["/v3/transactions/", ID, "/info"])). -spec post_tx(Data) -> {ok, Result} | {error, Reason} - when Data :: term(), % FIXME + when Data :: string() | binary(), Result :: term(), % FIXME Reason :: chain_error() | string(). %% @doc %% Post a transaction to the chain. -post_tx(Data) -> +post_tx(Data) when is_binary(Data) -> JSON = zj:binary_encode(#{tx => Data}), - request("/v3/transactions", JSON). + request("/v3/transactions", JSON); +post_tx(Data) when is_list(Data) -> + post_tx(list_to_binary(Data)). -spec contract(ID) -> {ok, ContractData} | {error, Reason} @@ -864,11 +860,12 @@ contract_create(CreatorID, Path, InitArgs) -> case next_nonce(CreatorID) of {ok, Nonce} -> Amount = 0, - Gas = 100000, + {ok, Height} = top_height(), + TTL = Height + 262980, + Gas = 500000, GasPrice = min_gas_price(), - Fee = min_fee(), contract_create(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, + Amount, TTL, Gas, GasPrice, Path, InitArgs); Error -> Error @@ -876,14 +873,14 @@ contract_create(CreatorID, Path, InitArgs) -> -spec contract_create(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, + Amount, TTL, Gas, GasPrice, Path, InitArgs) -> Result when CreatorID :: pubkey(), Nonce :: pos_integer(), Amount :: non_neg_integer(), + TTL :: pos_integer(), Gas :: pos_integer(), GasPrice :: pos_integer(), - Fee :: non_neg_integer(), Path :: file:filename(), InitArgs :: [string()], Result :: {ok, CreateTX} | {error, Reason}, @@ -927,6 +924,12 @@ contract_create(CreatorID, Path, InitArgs) -> %% of course there are very good reasons why it should be set to a non-zero value %% in the case of calls related to contract-governed payment systems. %% +%% TTL: +%% This stands for "Time-To-Live", meaning the height beyond which this element is +%% considered to be eligible for garbage collection (and therefore inaccessible!). +%% The TTL can be extended by a "live extension" transaction (basically pay for the +%% data to remain alive longer). +%% %%
  • %% Gas: %% This number sets a limit on the maximum amount of computation the caller is willing @@ -960,13 +963,6 @@ contract_create(CreatorID, Path, InitArgs) -> %% transaction, thus making miners more likely to prioritize the high value ones. %%
  • %%
  • -%% Fee: -%% This value should really be caled `Bribe' or `Tip'. -%% This is a flat fee in aettos that is paid into the block reward, thereby allowing -%% an additional way to prioritize a given transaction above others, even if the -%% transaction will not consume much gas. -%%
  • -%%
  • %% ACI: %% This is the compiled contract's metadata. It provides the information necessary %% for the contract call data to be formed in a way that the Gajumaru runtime will @@ -999,77 +995,81 @@ contract_create(CreatorID, Path, InitArgs) -> %% if you do not already have a copy, and can check the spec of a function before %% trying to form a contract call. -contract_create(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, - Path, InitArgs) -> - case aeso_compiler:file(Path, [{aci, json}]) of - {ok, Compiled} -> - contract_create2(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, - Compiled, InitArgs); +contract_create(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, Path, InitArgs) -> + case file:read_file(Path) of + {ok, Source} -> + Dir = filename:dirname(Path), + {ok, CWD} = file:get_cwd(), + SrcDir = aeso_utils:canonical_dir(Path), + Options = + [{aci, json}, + {src_file, Path}, + {src_dir, SrcDir}, + {include, {file_system, [CWD, aeso_utils:canonical_dir(Dir)]}}], + contract_create2(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, + Source, Options, InitArgs); Error -> Error end. -contract_create2(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, - Compiled, InitArgs) -> +contract_create2(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, Source, Options, InitArgs) -> + case aeso_compiler:from_string(Source, Options) of + {ok, Compiled} -> + contract_create3(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, + Source, Compiled, InitArgs); + Error -> + Error + end. + +contract_create3(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, Source, Compiled, InitArgs) -> AACI = prepare_aaci(maps:get(aci, Compiled)), case encode_call_data(AACI, "init", InitArgs) of {ok, CallData} -> - contract_create3(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, - Compiled, CallData); + contract_create4(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, + Source, Compiled, CallData); Error -> Error end. -contract_create3(CreatorID, Nonce, - Amount, Gas, GasPrice, Fee, - Compiled, CallData) -> +contract_create4(CreatorID, Nonce, Amount, TTL, Gas, GasPrice, Source, Compiled, CallData) -> PK = unicode:characters_to_binary(CreatorID), try {account_pubkey, OwnerID} = aeser_api_encoder:decode(PK), - contract_create4(OwnerID, Nonce, - Amount, Gas, GasPrice, Fee, - Compiled, CallData) + contract_create5(OwnerID, Nonce, Amount, TTL, Gas, GasPrice, Source, Compiled, CallData) catch Error:Reason -> {Error, Reason} end. -contract_create4(OwnerID, Nonce, - Amount, Gas, GasPrice, Fee, - Compiled, CallData) -> +contract_create5(OwnerID, Nonce, Amount, TTL, Gas, GasPrice, Source, Compiled, CallData) -> Code = aeser_contract_code:serialize(Compiled), - VM = 7, - ABI = 3, + VM = 1, + ABI = 1, <> = <>, ContractCreateVersion = 1, - TTL = 0, Type = contract_create_tx, Fields = [{owner_id, aeser_id:create(account, OwnerID)}, {nonce, Nonce}, {code, Code}, + {source, Source}, {ct_version, CTVersion}, - {fee, Fee}, {ttl, TTL}, {deposit, 0}, {amount, Amount}, - {gas, Gas}, {gas_price, GasPrice}, + {gas, Gas}, {call_data, CallData}], Template = [{owner_id, id}, {nonce, int}, {code, binary}, + {source, binary}, {ct_version, int}, - {fee, int}, {ttl, int}, {deposit, int}, {amount, int}, - {gas, int}, {gas_price, int}, + {gas, int}, {call_data, binary}], TXB = aeser_chain_objects:serialize(Type, ContractCreateVersion, Template, Fields), try @@ -1121,9 +1121,9 @@ read_aci(Path) -> CallTX :: binary(), Reason :: term(). %% @doc -%% Form a contract call using hardcoded default values for `Gas', `GasPrice', `Fee', +%% Form a contract call using hardcoded default values for `Gas', `GasPrice', %% and `Amount' to simplify the call (10 args is a bit much for normal calls!). -%% The values used are 20k for `Gas' and `Fee', the `GasPrice' is fixed at 1b (the +%% The values used are 20k for `Gas', the `GasPrice' is fixed at 1b (the %% default "miner minimum" defined in default configs), and the `Amount' is 0. %% %% For details on the meaning of these and other argument values see the doc comment @@ -1134,10 +1134,11 @@ contract_call(CallerID, AACI, ConID, Fun, Args) -> {ok, Nonce} -> Gas = min_gas(), GasPrice = min_gas_price(), - Fee = min_fee(), Amount = 0, + {ok, Height} = top_height(), + TTL = Height + 262980, contract_call(CallerID, Nonce, - Gas, GasPrice, Fee, Amount, + Gas, GasPrice, Amount, TTL, AACI, ConID, Fun, Args); Error -> Error @@ -1165,10 +1166,11 @@ contract_call(CallerID, Gas, AACI, ConID, Fun, Args) -> case next_nonce(CallerID) of {ok, Nonce} -> GasPrice = min_gas_price(), - Fee = min_fee(), Amount = 0, + {ok, Height} = top_height(), + TTL = Height + 262980, contract_call(CallerID, Nonce, - Gas, GasPrice, Fee, Amount, + Gas, GasPrice, Amount, TTL, AACI, ConID, Fun, Args); Error -> Error @@ -1176,14 +1178,14 @@ contract_call(CallerID, Gas, AACI, ConID, Fun, Args) -> -spec contract_call(CallerID, Nonce, - Gas, GasPrice, Fee, Amount, + Gas, GasPrice, Amount, TTL, AACI, ConID, Fun, Args) -> Result when CallerID :: unicode:chardata(), Nonce :: pos_integer(), Gas :: pos_integer(), GasPrice :: pos_integer(), - Fee :: non_neg_integer(), Amount :: non_neg_integer(), + TTL :: pos_integer(), AACI :: map(), ConID :: unicode:chardata(), Fun :: string(), @@ -1250,13 +1252,6 @@ contract_call(CallerID, Gas, AACI, ConID, Fun, Args) -> %% transaction, thus making miners more likely to prioritize the high value ones. %%
  • %%
  • -%% Fee: -%% This value should really be caled `Bribe' or `Tip'. -%% This is a flat fee in aettos that is paid into the block reward, thereby allowing -%% an additional way to prioritize a given transaction above others, even if the -%% transaction will not consume much gas. -%%
  • -%%
  • %% Amount: %% All Gajumaru transactions can carry an "amount" spent from the origin account %% (in this case the `CallerID') to the destination. In a "Spend" transaction this @@ -1300,33 +1295,32 @@ contract_call(CallerID, Gas, AACI, ConID, Fun, Args) -> %% if you do not already have a copy, and can check the spec of a function before %% trying to form a contract call. -contract_call(CallerID, Nonce, Gas, GP, Fee, Amount, AACI, ConID, Fun, Args) -> +contract_call(CallerID, Nonce, Gas, GP, Amount, TTL, AACI, ConID, Fun, Args) -> case encode_call_data(AACI, Fun, Args) of - {ok, CD} -> contract_call2(CallerID, Nonce, Gas, GP, Fee, Amount, ConID, CD); + {ok, CD} -> contract_call2(CallerID, Nonce, Gas, GP, Amount, TTL, ConID, CD); Error -> Error end. -contract_call2(CallerID, Nonce, Gas, GasPrice, Fee, Amount, ConID, CallData) -> +contract_call2(CallerID, Nonce, Gas, GasPrice, Amount, TTL, ConID, CallData) -> CallerBin = unicode:characters_to_binary(CallerID), try {account_pubkey, PK} = aeser_api_encoder:decode(CallerBin), - contract_call3(PK, Nonce, Gas, GasPrice, Fee, Amount, ConID, CallData) + contract_call3(PK, Nonce, Gas, GasPrice, Amount, TTL, ConID, CallData) catch Error:Reason -> {Error, Reason} end. -contract_call3(PK, Nonce, Gas, GasPrice, Fee, Amount, ConID, CallData) -> +contract_call3(PK, Nonce, Gas, GasPrice, Amount, TTL, ConID, CallData) -> ConBin = unicode:characters_to_binary(ConID), try {contract_pubkey, CK} = aeser_api_encoder:decode(ConBin), - contract_call4(PK, Nonce, Gas, GasPrice, Fee, Amount, CK, CallData) + contract_call4(PK, Nonce, Gas, GasPrice, Amount, TTL, CK, CallData) catch Error:Reason -> {Error, Reason} end. -contract_call4(PK, Nonce, Gas, GasPrice, Fee, Amount, CK, CallData) -> - ABI = 3, - TTL = 0, +contract_call4(PK, Nonce, Gas, GasPrice, Amount, TTL, CK, CallData) -> + ABI = 1, CallVersion = 1, Type = contract_call_tx, Fields = @@ -1334,22 +1328,20 @@ contract_call4(PK, Nonce, Gas, GasPrice, Fee, Amount, CK, CallData) -> {nonce, Nonce}, {contract_id, aeser_id:create(contract, CK)}, {abi_version, ABI}, - {fee, Fee}, {ttl, TTL}, {amount, Amount}, - {gas, Gas}, {gas_price, GasPrice}, + {gas, Gas}, {call_data, CallData}], Template = [{caller_id, id}, {nonce, int}, {contract_id, id}, {abi_version, int}, - {fee, int}, {ttl, int}, {amount, int}, - {gas, int}, {gas_price, int}, + {gas, int}, {call_data, binary}], TXB = aeser_chain_objects:serialize(Type, CallVersion, Template, Fields), try @@ -1988,7 +1980,7 @@ aaci_lookup_spec({aaci, _, FunDefs, _}, Fun) -> %% contention becomes an issue. min_gas_price() -> - 1000000000. + 1_000_000_000. -spec min_gas() -> integer(). @@ -2005,19 +1997,6 @@ min_gas() -> 20000. --spec min_fee() -> integer(). -%% @doc -%% This function always returns 200,000,000,000,000 in the current version. -%% -%% This is the minimum fee amount currently accepted -- it is up to callers whether -%% they want to customize this value higher (or possibly lower, though as things stand -%% that would only work on an independent AE-based network, not the actual Gajumaru -%% mainnet or testnet). - -min_fee() -> - 200000000000000. - - encode_call_data({aaci, _ContractName, FunDefs, _TypeDefs}, Fun, Args) -> case maps:find(Fun, FunDefs) of {ok, {ArgDef, _ResultDef}} -> encode_call_data2(ArgDef, Fun, Args); @@ -2052,10 +2031,9 @@ verify_signature(Sig, Message, PubKey) -> end. verify_signature2(Sig, Message, PK) -> - % Superhero salts/hashes the message before signing it, in order to protect + % Gajumaru signatures require messages to be salted and hashed, then + % the hash is what gets signed in order to protect % the user from accidentally signing a transaction disguised as a message. - % In order to verify the signature, we have to duplicate superhero's - % salt/hash procedure here. % % Salt the message then hash with blake2b. See: % 1. Erlang Blake2 blake2b/2 function: @@ -2064,13 +2042,13 @@ verify_signature2(Sig, Message, PK) -> % https://gitlab.com/ioecs/aepp-sdk-js/blob/370f1e30064ad0239ba59931908d9aba0a2e86b6/src/utils/crypto.ts#L171-L175 % 3. SDK hashing: % https://gitlab.com/ioecs/aepp-sdk-js/blob/370f1e30064ad0239ba59931908d9aba0a2e86b6/src/utils/crypto.ts#L83-L85 - Prefix = <<"aeternity Signed Message:\n">>, -% Prefix = <<"gajumaru Signed Message:\n">>, % TODO: Switch the prefix after we kill Superhero + Prefix = <<"Gajumaru Signed Message:\n">>, {ok, PSize} = vencode(byte_size(Prefix)), {ok, MSize} = vencode(byte_size(Message)), Smashed = iolist_to_binary([PSize, Prefix, MSize, Message]), {ok, Hashed} = eblake2:blake2b(32, Smashed), - Signature = <<(binary_to_integer(Sig, 16)):(64 * 8)>>, +% Signature = <<(binary_to_integer(Sig, 16)):(64 * 8)>>, + Signature = base64:decode(Sig), Result = ecu_eddsa:sign_verify_detached(Signature, Hashed, PK), {ok, Result}. diff --git a/src/hz_fetcher.erl b/src/hz_fetcher.erl index fd9c33d..159711b 100644 --- a/src/hz_fetcher.erl +++ b/src/hz_fetcher.erl @@ -1,5 +1,3 @@ -%%% @private - -module(hz_fetcher). -vsn("0.4.1"). -author("Craig Everett ").