From 786fa5ef11908a4d93b051db6c6f975ef409d16f Mon Sep 17 00:00:00 2001 From: Z4karia <92750334+Z4karia@users.noreply.github.com> Date: Fri, 3 Mar 2023 11:28:54 +0000 Subject: [PATCH 1/2] feat: implement method finalizeAuction + update b2c --- src/contract.c | 5 +++++ src/handle_finalize.c | 3 +++ src/handle_init_contract.c | 1 + src/handle_provide_parameter.c | 5 +++-- src/handle_query_contract_id.c | 3 +++ src/handle_query_contract_ui.c | 9 +++++++++ src/ledger_nft_plugin.h | 3 ++- tests/networks/ethereum_goerli/ledgerNFT/b2c.json | 5 +++++ 8 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/contract.c b/src/contract.c index 599a8f8..3a3f0f6 100644 --- a/src/contract.c +++ b/src/contract.c @@ -32,6 +32,10 @@ static const uint8_t MINT_SIGN_V2_SELECTOR[SELECTOR_SIZE] = {0x65, 0x7b, 0xb1, 0 // Selector: 0x454a2ab3 static const uint8_t BID_SELECTOR[SELECTOR_SIZE] = {0x45, 0x4a, 0x2a, 0xb3}; +// Function: finalizeAuction +// Selector: 0xe8083863 +static const uint8_t FINALIZE_AUCTION_SELECTOR[SELECTOR_SIZE] = {0xe8, 0x08, 0x38, 0x63}; + // Plugin uses 0x00000 as a dummy address to reprecent ETH. const uint8_t NULL_ETH_ADDRESS[ADDRESS_LENGTH] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -47,4 +51,5 @@ const uint8_t *const LEDGER_NFT_SELECTORS[NUM_SELECTORS] = { MINT_V2_SELECTOR, MINT_SIGN_V2_SELECTOR, BID_SELECTOR, + FINALIZE_AUCTION_SELECTOR, }; diff --git a/src/handle_finalize.c b/src/handle_finalize.c index 7646237..a6d22f7 100644 --- a/src/handle_finalize.c +++ b/src/handle_finalize.c @@ -5,6 +5,9 @@ void handle_finalize(void *parameters) { context_t *context = (context_t *) msg->pluginContext; msg->uiType = ETH_UI_TYPE_GENERIC; switch (context->selectorIndex) { + case FINALIZE_AUCTION: + msg->numScreens = 1; + break; case MINT: case PRE_SALE_MINT: case STABLE_MINT_SIGN: diff --git a/src/handle_init_contract.c b/src/handle_init_contract.c index 8bbf23d..6364739 100644 --- a/src/handle_init_contract.c +++ b/src/handle_init_contract.c @@ -44,6 +44,7 @@ void handle_init_contract(void *parameters) { context->next_param = OFFSET; break; case BID: + case FINALIZE_AUCTION: context->next_param = AUCTION_ID; break; default: diff --git a/src/handle_provide_parameter.c b/src/handle_provide_parameter.c index 3e06dfb..c43211a 100644 --- a/src/handle_provide_parameter.c +++ b/src/handle_provide_parameter.c @@ -65,7 +65,7 @@ void handle_mint_sign_v2(ethPluginProvideParameter_t *msg, context_t *context) { } } -void handle_bid(ethPluginProvideParameter_t *msg, context_t *context) { +void handle_auction(ethPluginProvideParameter_t *msg, context_t *context) { switch (context->next_param) { case AUCTION_ID: // Using context->token_id to store the auctionId @@ -113,7 +113,8 @@ void handle_provide_parameter(void *parameters) { handle_mint_sign_v2(msg, context); break; case BID: - handle_bid(msg, context); + case FINALIZE_AUCTION: + handle_auction(msg, context); break; default: PRINTF("Selector Index not supported: %d\n", context->selectorIndex); diff --git a/src/handle_query_contract_id.c b/src/handle_query_contract_id.c index 73a1299..beac253 100644 --- a/src/handle_query_contract_id.c +++ b/src/handle_query_contract_id.c @@ -31,6 +31,9 @@ void handle_query_contract_id(void *parameters) { case BID: strlcpy(msg->version, "Bid", msg->versionLength); break; + case FINALIZE_AUCTION: + strlcpy(msg->version, "Finalize Auction", msg->versionLength); + break; default: PRINTF("Selector index: %d not supported\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/handle_query_contract_ui.c b/src/handle_query_contract_ui.c index b2cb6d7..ee08ae6 100644 --- a/src/handle_query_contract_ui.c +++ b/src/handle_query_contract_ui.c @@ -88,6 +88,15 @@ static screens_t get_screen(const ethQueryContractUI_t *msg, default: return ERROR; } + break; + case FINALIZE_AUCTION: + switch (index) { + case 0: + return AUCTION_ID_SCREEN; + default: + return ERROR; + } + break; default: PRINTF("Selector index: %d not supported\n", context->selectorIndex); return ERROR; diff --git a/src/ledger_nft_plugin.h b/src/ledger_nft_plugin.h index d62e6c3..cd010ad 100644 --- a/src/ledger_nft_plugin.h +++ b/src/ledger_nft_plugin.h @@ -4,7 +4,7 @@ #include "eth_internals.h" #include "eth_plugin_interface.h" -#define NUM_SELECTORS 8 +#define NUM_SELECTORS 9 #define PLUGIN_NAME "Ledger NFT" #define TOKEN_FOUND 1 << 1 #define SELECTOR_SIZE 4 @@ -24,6 +24,7 @@ typedef enum { MINT_V2, MINT_SIGN_V2, BID, + FINALIZE_AUCTION, } selector_t; // Enumeration used to parse the smart contract data. diff --git a/tests/networks/ethereum_goerli/ledgerNFT/b2c.json b/tests/networks/ethereum_goerli/ledgerNFT/b2c.json index 7355d26..835fbae 100644 --- a/tests/networks/ethereum_goerli/ledgerNFT/b2c.json +++ b/tests/networks/ethereum_goerli/ledgerNFT/b2c.json @@ -62,6 +62,11 @@ "erc20OfInterest": [], "method": "bid", "plugin": "LedgerNFT" + }, + "0xe8083863": { + "erc20OfInterest": [], + "method": "finalizeAuction", + "plugin": "LedgerNFT" } } } From 4d8f0f214d77720e5ea2ebbe0898f055055c4ba3 Mon Sep 17 00:00:00 2001 From: Z4karia <92750334+Z4karia@users.noreply.github.com> Date: Fri, 3 Mar 2023 11:30:07 +0000 Subject: [PATCH 2/2] test: test method finalizeAuction --- .../00000.png | Bin 0 -> 374 bytes .../00001.png | Bin 0 -> 412 bytes .../00002.png | Bin 0 -> 298 bytes .../00003.png | Bin 0 -> 358 bytes .../00004.png | Bin 0 -> 414 bytes .../00005.png | Bin 0 -> 349 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 457 bytes .../00002.png | Bin 0 -> 361 bytes .../00003.png | Bin 0 -> 417 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 382 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 457 bytes .../00002.png | Bin 0 -> 361 bytes .../00003.png | Bin 0 -> 417 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 382 bytes tests/src/finalizeAuction.test.js | 40 ++++++++++++++++++ 19 files changed, 40 insertions(+) create mode 100644 tests/snapshots/ethereum_goerli_nanos_finalize_auction/00000.png create mode 100644 tests/snapshots/ethereum_goerli_nanos_finalize_auction/00001.png create mode 100644 tests/snapshots/ethereum_goerli_nanos_finalize_auction/00002.png create mode 100644 tests/snapshots/ethereum_goerli_nanos_finalize_auction/00003.png create mode 100644 tests/snapshots/ethereum_goerli_nanos_finalize_auction/00004.png create mode 100644 tests/snapshots/ethereum_goerli_nanos_finalize_auction/00005.png create mode 100644 tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00000.png create mode 100644 tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00001.png create mode 100644 tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00002.png create mode 100644 tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00003.png create mode 100644 tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00004.png create mode 100644 tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00005.png create mode 100644 tests/snapshots/ethereum_goerli_nanox_finalize_auction/00000.png create mode 100644 tests/snapshots/ethereum_goerli_nanox_finalize_auction/00001.png create mode 100644 tests/snapshots/ethereum_goerli_nanox_finalize_auction/00002.png create mode 100644 tests/snapshots/ethereum_goerli_nanox_finalize_auction/00003.png create mode 100644 tests/snapshots/ethereum_goerli_nanox_finalize_auction/00004.png create mode 100644 tests/snapshots/ethereum_goerli_nanox_finalize_auction/00005.png create mode 100644 tests/src/finalizeAuction.test.js diff --git a/tests/snapshots/ethereum_goerli_nanos_finalize_auction/00000.png b/tests/snapshots/ethereum_goerli_nanos_finalize_auction/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8d84cc70fea8013b7e8b25c0982ce142fa103d5c GIT binary patch literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY literal 0 HcmV?d00001 diff --git a/tests/snapshots/ethereum_goerli_nanos_finalize_auction/00001.png b/tests/snapshots/ethereum_goerli_nanos_finalize_auction/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..6879a25cd5423d5591ef37c7eba27b222f1612ea GIT binary patch literal 412 zcmV;N0b~A&P)C!0a~Xmmn~aW?2hJr*eJ&3X!7M; zh_}sF1JryAqlaO#a_N|zXcXcq_#nLYnNtJ+00000Ch-An{R~oq=7@v<0000PAG%ruR{=Dvcq9Nq~w+S)R&9eyldevpU?fL}Y)F=jQYe zm_F`>Qv%MG`1zP8pjwgnb}Ey>*C^gcj==l0J`W$t-}JBKw{F6V=o>fpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq literal 0 HcmV?d00001 diff --git a/tests/snapshots/ethereum_goerli_nanos_finalize_auction/00005.png b/tests/snapshots/ethereum_goerli_nanos_finalize_auction/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00000.png b/tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*mY{mp|2jJjzmwYC z!hV?VfTmMrM3nurKH|P`k}Fq0Ok(4D45CWamVNKO1jzj%wpX-;a?8nl>lV~GTVfcxlg%Ez>-HMMT!<82Kdr)>b&54+f+GoXC2|C6`_05FdGX6ldA{=Y~&5AeIs z|Ngfh629iF?=tZ-)L&`EE-Ax8`Jf7oYO3&yR^5q)T^sR<{8*>tg^!T9aV)%;jBP>L z3bHWPSGMu&3#UiXY~%{4nj?i{kh3!Jl&_{H^7%$4pmx{|Hm`mv9*M&Y*KAjJJh$V z>st8FZ%>ZwKP7C>X8W#Iv9{1(WZZ8^%svZe`tDj`lorq`sH2M=DyZ<=6-rt!|Ho! zWXh_1wZN=Z`8|d+Iz?u!3`jYapmB;DXgo6D`OJP&>)=5t>v^+4!k(^vF6*2UngE)c BqP_qC literal 0 HcmV?d00001 diff --git a/tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00003.png b/tests/snapshots/ethereum_goerli_nanosp_finalize_auction/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..89bfa0bd391e435763a683b94ffa7aaab7681d4e GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jfba4!+nDh2V^rRLA9*4lR ztg=J@rcc>>rd`$5*`a2_g{QXhVz&ikP!?ePc9Z*U2SvI~Pt|xq0uB$Jg$J ze#whrey*8eb96b^VzrHvBiH{_*Rf!I8tl7h--_Rw+K+O?SNHDIPXzj}eAaI1TlXtY zN_UF}|Fygkx$@d_y)7$Fo2-BOF*!6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*mY{mp|2jJjzmwYC z!hV?VfTmMrM3nurKH|P`k}Fq0Ok(4D45CWamVNKO1jzj%wpX-;a?8nl>lV~GTVfcxlg%Ez>-HMMT!<82Kdr)>b&54+f+GoXC2|C6`_05FdGX6ldA{=Y~&5AeIs z|Ngfh629iF?=tZ-)L&`EE-Ax8`Jf7oYO3&yR^5q)T^sR<{8*>tg^!T9aV)%;jBP>L z3bHWPSGMu&3#UiXY~%{4nj?i{kh3!Jl&_{H^7%$4pmx{|Hm`mv9*M&Y*KAjJJh$V z>st8FZ%>ZwKP7C>X8W#Iv9{1(WZZ8^%svZe`tDj`lorq`sH2M=DyZ<=6-rt!|Ho! zWXh_1wZN=Z`8|d+Iz?u!3`jYapmB;DXgo6D`OJP&>)=5t>v^+4!k(^vF6*2UngE)c BqP_qC literal 0 HcmV?d00001 diff --git a/tests/snapshots/ethereum_goerli_nanox_finalize_auction/00003.png b/tests/snapshots/ethereum_goerli_nanox_finalize_auction/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..89bfa0bd391e435763a683b94ffa7aaab7681d4e GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jfba4!+nDh2V^rRLA9*4lR ztg=J@rcc>>rd`$5*`a2_g{QXhVz&ikP!?ePc9Z*U2SvI~Pt|xq0uB$Jg$J ze#whrey*8eb96b^VzrHvBiH{_*Rf!I8tl7h--_Rw+K+O?SNHDIPXzj}eAaI1TlXtY zN_UF}|Fygkx$@d_y)7$Fo2-BOF*!6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~o { + processTest(device, contractName, testLabel, testDirSuffix, "", signedPlugin, serializedTx, testNetwork); +}); \ No newline at end of file