From 882833619b944679c45b0abd602353f7d66f06ba Mon Sep 17 00:00:00 2001 From: Tomek Marciniak <tmarciniakm@gmail.com> Date: Sat, 6 Apr 2024 13:16:07 +0200 Subject: [PATCH] feat(web connector): unmock the values --- bun.lockb | Bin 93513 -> 93513 bytes src/App.svelte | 75 +++++++++++++++++++++++++++---------------------- src/lib/tx.ts | 10 +++---- 3 files changed, 46 insertions(+), 39 deletions(-) diff --git a/bun.lockb b/bun.lockb index 473f8b4eafe1bce441858124d0020fcb7996fdd1..daae173039ccc033f12f841768dfceadff2bef5e 100755 GIT binary patch delta 1483 zcmW;ADU8$r07l`g*y4(-tQ@mRLqZriavTk6RxFge+-14SUG8$1W1-yTE_c~vlgi4H zHI*X}BS(&791Z->e0h1Rzh_r}&o2L2n3-9cF3kVe-7Ir#aj-?FK*LjeSfaUA$Hxk- zZ8`zgXm8gEvBAy`od}2M?9_>Igxy^_368P1TPMW{_I;fUr|9m{$+5-3UY!DseQFO& zH23THSfO=5C%_u*gE}EL*g2#V;SilbC&m$W59=g2#@?b%iWBS~(aCU%?opi_TO1tI zDbP5s_OL|rgpQ9DTA@yWHQFb2LTs>eN+-f0I;VAF9AWp2PJ(0Xoz+Qkg8g$k8BWnX zuajeogGi@9<AU1563vS`K2~U5(h0Ce`?5}m4R)^RL^wp}s!og}>|WDJaE!fJC&dZ& zuj^zuMfZkIjx7#u>J(_)QhQjUd0WTF3avXj0oG{W)d{h|PNEax5S@EEF^;f%Unjva z_8#b@IKloyoeZbwF6rdh;^2`^fyQIChb5Y+j*k^uPjmvT(SE8EVuPJ$IuQ=hd9D-V z2)i$I5*%airA~?y?7z~<aEflGlVgj6*E$6nZ`2-^Xuj3)u|n&ePJlJq?{z|Ku=7DD z!XY{zbz&T0H`hsUjJ;1fDNeBeStr9Ox?gm1Y;o{ar$FPI+QSmf?>atKX#LO$utvMk f39%{WmzLMgt!(=FYvY<3Z@sh5*|1{&om>0|Mug<P delta 1483 zcmW;ADU8$r0EOX&WQ!}VvU1EOBS(%LM}z8$g>sj>ELXY9UG8!$l)K#JE|5(sD@)dl z9I;~L$Z^!s!26&0^75~&&aSM^{`|ABW@f2bnE$V{N#@w1yIG|`!_)V$M01OZj}=;5 zRRXNh-lh`b5IfsdA{=3Nhf0iN?Cn%ZaDx3^Dk)BJ;HzZVptD;g#}?f^Dg_#Q^*t=n z+^6DWh1PzR0Bf`lsDwDg&Owz3N7xNiVjN@dkV=9R>@TXMIK{zXl?)qnj;Q3=qI*=O zK;xLchb5ZFReY?_3RMEE(LSLP;t)G0RU#Z=_moPEW9*$)NpOPwGb$-gad1{8!v>vm zDmk|3Mk)mw=k+}-(Y&DIV};g5l>lqBFR6q$#Li`v2uIkxq7vg6dskHwoM1mzNpXsU zYbqHw=v-IHu|@ZWN`b~reGf}CZ>jiLp><m&z#8p4Dj^QBlc+>E!tPy_7{}PVr;^|V z`}b8+oZ{etN`?(OODZ|G=sr{_(0HWpVTop{;$wx@W0e4Fw4bPiIK<9Vl?X@JeWnuQ z7<<oE5}aWFg-VK39K2M?ut6tN$+1QEl}dreYkdz(G~cNBSfTY+CBPc(cPb$cvGZOf z!Vz{qsKhwNUapeh1p6OVQk>%8lS+mSI-gZ?Y|;IqQlRlw-@_8kZz?`kXnj`+utvL3 b32|7=Fa26Sx4iMk?+xqL&ah?s@7&@)b=Km1 diff --git a/src/App.svelte b/src/App.svelte index e029c18..aaae168 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,23 +1,21 @@ <script lang="ts"> import { writable } from "svelte/store"; - import { Mina } from "o1js"; import { constructPaymentTx } from "./lib/tx"; - import Client from "mina-signer"; - import { exampleCredential } from './credentials/mock_credential' + import { exampleCredential } from "./credentials/mock_credential"; - const Local = Mina.LocalBlockchain(); - const signerClient = new Client({ network: Local.getNetworkId() }); - const keypair = signerClient.genKeys(); + export const messageToSign = writable<string>("Message to sign"); + export const fieldsToSign = writable<string>("[0]"); const walletName = window.mina.wallet.name; const walletIcon = window.mina.wallet.icon; + export let isConnected = window.mina.isConnected(); export let enable = window.mina.enable; export let disconnect = window.mina.disconnect; export const signMessage = async () => { const response = await window.mina.request({ method: "mina_sign", - params: { message: "test" }, + params: { message: $messageToSign }, }); results.set({ ...$results, @@ -27,7 +25,7 @@ export const signFields = async () => { const response = await window.mina.request({ method: "mina_signFields", - params: [0], + params: JSON.parse($fieldsToSign), }); results.set({ ...$results, @@ -35,16 +33,19 @@ }); }; const signTx = async () => { - console.log(">>>KP", keypair); + const accountsResponse = await window.mina.request({ + method: "mina_accounts", + }); const constructedTx = constructPaymentTx({ - from: keypair.publicKey, - to: keypair.publicKey, + from: accountsResponse.result[0], + to: "B62qkYa1o6Mj6uTTjDQCob7FYZspuhkm4RRQhgJg9j4koEBWiSrTQrS", amount: 100, - fee: 0, + fee: 1, type: "payment", nonce: 0, validUntil: 321, }); + console.log(JSON.stringify(constructedTx)); const response = await window.mina.request({ method: "mina_signTransaction", params: { transaction: constructedTx }, @@ -82,22 +83,27 @@ }; const getCredential = async () => { const response = await window.mina.request({ - method: 'mina_getState', params: {query: {issuer: 'University of Example'}, props: []} - }) + method: "mina_getState", + params: { query: { issuer: "University of Example" }, props: [] }, + }); console.log(response); results.set({ ...$results, - credential: response.result, - }) + credential: JSON.stringify(response.result, undefined, "\t"), + }); }; const setCredentialState = async () => { const response = await window.mina.request({ - method: 'mina_setState', params: {objectName: "exampleCredential", object: exampleCredential} - }) + method: "mina_setState", + params: { + objectName: "exampleCredential", + object: exampleCredential, + }, + }); console.log(response); // nothing to write in the app // since it is writing to Pallad - } + }; export const results = writable({ accounts: "", chainId: "", @@ -106,7 +112,6 @@ signMessage: "", signTransactions: "", credential: "", - mockCredential: exampleCredential, }); </script> @@ -177,22 +182,26 @@ <button class="btn btn-neutral flex-1" on:click={getBalance} >mina_getBalance</button > - <button class="btn btn-neutral flex-1" on:click={getCredential} - >mina_getState</button - > </div> </div> </div> <div class="card bg-base-200 shadow-xl"> <div class="card-body"> - <h2 class="text-2xl font-semibold">Setters</h2> - <div class="grid grid-cols-[2fr_1fr] gap-2"> - <input - class="input input-bordered" - value={$results.mockCredential} - /> - <button class="btn btn-neutral flex-1" on:click={setCredentialState} - >mina_setState</button + <h2 class="text-2xl font-semibold">Proofs Store</h2> + <p>Result</p> + <textarea + class="textarea textarea-bordered h-32 resize-none" + placeholder="Result" + value={$results.credential} + /> + <div class="grid grid-cols-2 gap-2"> + <button + class="btn btn-neutral flex-1" + on:click={setCredentialState}>mina_setState</button + > + <button + class="btn btn-neutral flex-1" + on:click={getCredential}>mina_getState</button > </div> </div> @@ -203,7 +212,7 @@ <p>Message</p> <input class="input input-bordered" - placeholder="Message to sign" + bind:value={$messageToSign} /> <p>Result</p> <textarea @@ -223,7 +232,7 @@ <input class="input input-bordered" placeholder="Stringified fields" - value="[0]" + bind:value={$fieldsToSign} /> <p>Result</p> <textarea diff --git a/src/lib/tx.ts b/src/lib/tx.ts index 3d6f440..4f56c52 100644 --- a/src/lib/tx.ts +++ b/src/lib/tx.ts @@ -23,19 +23,17 @@ export type TransactionBody = { }; export function constructPaymentTx(payment: TransactionBody) { - const sendFee = BigInt(payment.fee); - const sendAmount = payment.amount ? BigInt(payment.amount) : BigInt(0); + const sendFee = payment.fee; + const sendAmount = payment.amount ?? 0; const memo = payment.memo || ""; - const validUntil = payment.validUntil - ? BigInt(payment.validUntil) - : BigInt(4294967295); // Mina Signer has a defaultValidUntil = '4294967295'; + const validUntil = payment.validUntil ? payment.validUntil : 4294967295; // Mina Signer has a defaultValidUntil = '4294967295'; return { to: payment.to, from: payment.from, amount: sendAmount, fee: sendFee, - nonce: BigInt(payment.nonce), + nonce: payment.nonce, memo: memo, validUntil: validUntil, type: TransactionKind.PAYMENT,