major progress

This commit is contained in:
2026-10-05 20:32:27 -07:00
parent bbd0cd0853
commit f50b394301
2 changed files with 116 additions and 10 deletions
+1 -1
View File
@@ -2,6 +2,6 @@
[{description,[]},
{registered,[]},
{included_applications,[]},
{applications,[stdlib,kernel]},
{applications,[stdlib,kernel, ssl]},
{vsn,"0.1.0"},
{modules,[rq]}]}.
+115 -9
View File
@@ -12,6 +12,7 @@
start(ArgV) ->
ok = hz(),
_ = application:ensure_all_started(ssl),
rq(ArgV).
@@ -33,13 +34,22 @@ help_screen() ->
rq addr names.aes
rq ctstr names
rq ctstr names.aes deployed address of names
rq decode xy_... only on the ones i use
rq grids URL only works with the faucet grids
rq my
rq my everything all
rq my akstr my akstr
rq my acc
rq my balance
rq my explorer
rq my explorer_link
rq my explorer_url
rq my url
rq my rbx_tuples
rq my tuples my rbx_tuples
rq query ak_... hz:acc("ak_...")
rq query ct_... hz:contract("ak_...")
rq query th_... hz:contract("ak_...")
rq lookup NAME
rq register NAME
rq src names.aes print contract source
@@ -72,10 +82,18 @@ rq_II(Args) ->
io:format("~ts~n", [nct_ctstr()]);
["debug" | Rest] ->
rq_debug(Rest);
["decode", ApiStr] -> rq_decode(ApiStr);
["grids", URL] -> rq_grids(URL);
["my"] -> rq_my(everything);
["my", "everything"] -> rq_my(everything);
["my", "acc"] -> rq_my(acc);
["my", "addr"] -> rq_my(akstr);
["my", "akstr"] -> rq_my(akstr);
["my", "balance"] -> rq_my(balance);
["my", "explorer"] -> rq_my(url);
["my", "explorer_link"] -> rq_my(url);
["my", "explorer_url"] -> rq_my(url);
["my", "url"] -> rq_my(url);
["my", "rbx_tuples"] -> rq_my(rbx_tuples);
["my", "tuples"] -> rq_my(rbx_tuples);
["lookup", Name] -> rq_lookup(Name);
@@ -87,11 +105,75 @@ rq_II(Args) ->
BadArgs -> badargs(BadArgs)
end.
rq_decode(CbStr = "cb_" ++ _) ->
CbBin = unicode:characters_to_binary(CbStr),
io:format("CbBin = ~tp~n", [CbBin]),
{contract_bytearray, Bytes} = gmser_api_encoder:decode(CbBin),
io:format("Bytes = ~tp~n", [Bytes]),
Deser = gmb_fate_encoding:deserialize(Bytes),
io:format("Deserialized = ~tp~n", [Deser]),
Fmt = gmb_fate_data:format(Deser),
io:format("Formatted = ~ts~n", [Fmt]),
ok.
% hacky to get fund via faucet to work
rq_grids(URL) ->
{ok, {{sign, https}, URL_II}} = hz_grids:parse(URL),
case httpc:request(URL_II) of
{ok, {{_HttpVsn, 200, _Slogan}, _Hdrs, JSONBodyStr}} ->
rq_grids_ii00(URL_II, JSONBodyStr);
{ok, {{_HttpVsn, 404, _Slogan}, _Hdrs, _JSONBodyStr}} ->
io:format("BUTTER YOUR OWN BISCUIT FATASS~n", []),
io:format("(404... probably faucet copypasta expired)~n", []);
Error ->
io:format("ERROR: ~tp~n", [Error])
end.
rq_grids_ii00(URL_II, JSONBodyStr) ->
{ok, Decoded} = zj:decode(JSONBodyStr),
io:format("Decoded = ~tp~n", [Decoded]),
case Decoded of
#{"chain" := "gajumaru",
"grids" := 1,
"network_id" := "groot.testnet",
"payload" := PayloadStr,
"public_id" := false,
"signature" := undefined,
"type" := "message"} ->
rq_grids_iii(URL_II, Decoded, PayloadStr);
_Nah ->
error(nah_brah)
end.
rq_grids_iii(URL_II, Decoded, PayloadStr) ->
io:format("PayloadStr = ~tp~n", [PayloadStr]),
Sig = base64:encode(hz:sign_message(unicode:characters_to_binary(PayloadStr), my_secret_key())),
Recoded = Decoded#{"signature" => Sig,
"public_id" => my_akstr()},
io:format("Recoded = ~tp~n", [Recoded]),
Reconfuckulated = zj:encode(Recoded),
io:format("Reconfuckulated = ~tp~n", [Reconfuckulated]),
Shit = httpc:request(post, {URL_II, [], "application/json", Reconfuckulated}, [], []),
io:format("Shit = ~tp~n", [Shit]).
% ok.
rq_my(everything) ->
rq_my(akstr),
rq_my(rbx_tuples);
rq_my(acc) ->
Ak = my_akstr(),
rq_query([Ak]);
rq_my(balance) ->
Ak = my_akstr(),
{ok, #{"balance" := B}} = hz:acc(Ak),
io:format("Balance = ~tp~n", [B]),
io:format("log10(Balance) = ~tp~n", [math:log10(B)]);
rq_my(akstr) ->
io:format("~ts~n", [my_akstr()]);
rq_my(url) ->
io:format("https://groot.testnet.gajumaru.io/account/~ts~n", [my_akstr()]);
rq_my(rbx_tuples) ->
io:format("~tp~n", [my_rbx_tuples()]).
@@ -100,10 +182,16 @@ rq_query([Ak = "ak_" ++ _ | Rest]) ->
{ok, X} = hz:acc(Ak),
io:format("~tp~n", [X]),
rq_query(Rest);
rq_query([Cb = "cb_" ++ _ | Rest]) ->
rq_decode(Cb),
rq_query(Rest);
rq_query([Ct = "ct_" ++ _ | Rest]) ->
{ok, X} = hz:contract(Ct),
io:format("~tp~n", [X]),
rq_query(Rest);
rq_query([Th = "th" ++ _ | Rest]) ->
await_thstr(Th),
rq_query(Rest);
rq_query([]) ->
ok.
@@ -177,17 +265,35 @@ dbg_rct() ->
rq_register(Name) ->
{ok, CallTx} = hz:contract_call(my_akstr(), nct_aaci(), nct_ctstr(), "register", [Name]),
{ok, SignedTx} = hz:sign_tx(CallTx, my_secret_key()),
{ok, Result} = hz:post_tx(SignedTx),
io:format("~tp~n", [Result]).
ct_call(nct_aaci(), nct_ctstr(), "register", [Name]).
rq_lookup(Name) ->
{ok, CallTx} = hz:contract_call(my_akstr(), nct_aaci(), nct_ctstr(), "lookup", {erlang, [Name]}),
SignedTx = hz:sign_tx(CallTx, my_secret_key()),
{ok, Result} = hz:post_tx(SignedTx),
io:format("~tp~n", [Result]).
ct_call(nct_aaci(), nct_ctstr(), "lookup", [Name]).
ct_call(AACI, CtStr, FunName, ErlArgs) ->
{ok, CallTx} = hz:contract_call(my_akstr(), AACI, CtStr, FunName, {erlang, ErlArgs}),
SignedTx = hz:sign_tx(CallTx, my_secret_key()),
{ok, PostResult} = hz:post_tx(SignedTx),
case PostResult of
#{"tx_hash" := ThStr} ->
await_thstr(ThStr);
#{"error" := NodeErr} ->
io:format("ERROR: node sent back the following extremely helpful error message~n", []),
io:format("NodeErr = ~tp~n", [NodeErr]),
error(NodeErr);
_ ->
io:format("ERROR (nyi) node sent back voodoo:~n", []),
io:format("PostResult = ~tp~n", [PostResult]),
error(nyi)
end.
await_thstr(ThStr) ->
{ok, Tx} = hz:tx(ThStr),
{ok, TxInfo} = hz:tx_info(ThStr),
io:format("Tx = ~tp~n", [Tx]),
io:format("TxInfo = ~tp~n", [TxInfo]),
ok.
%% name contract deployed address
@@ -235,7 +341,7 @@ my_keypair() ->
ecu_eddsa:sign_seed_keypair(my_seed()).
my_seed() ->
crypto:hash(sha3_512, <<"p@ssw0rd">>).
crypto:hash(sha3_256, <<"p@ssw0rd">>).
my_rbx_tuples() ->
NoiseStr = "Noise_NK_25519_ChaChaPoly_BLAKE2b",