{"id":2524,"date":"2022-12-07T13:27:58","date_gmt":"2022-12-07T12:27:58","guid":{"rendered":"https:\/\/clone.nextrope.com\/?p=2524"},"modified":"2024-04-09T10:50:35","modified_gmt":"2024-04-09T08:50:35","slug":"jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji","status":"publish","type":"post","link":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/","title":{"rendered":"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ?"},"content":{"rendered":"<p><a href=\"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-wallet-smart-contract-za-pomoca-solidity\/\">W poprzednim tutorialu<\/a> dowiedzia\u0142e\u015b si\u0119, jak stworzy\u0107 smart contract, kt\u00f3ry jest walletem. W tym tutorialu postaramy si\u0119 utrwali\u0107 wiedz\u0119 z poprzedniego poradnika oraz poszerzy\u0107 j\u0105 o now\u0105.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-ht-block-toc  is-style-outline htoc htoc--position-wide toc-list-style-plain\" data-htoc-state=\"expanded\"><span class=\"htoc__title\"><span class=\"ht_toc_title\">Spis tre\u015bci:<\/span><span class=\"htoc__toggle\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\"><g fill=\"#444\"><path d=\"M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><path d=\"M15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><\/g><\/svg><\/span><\/span><div class=\"htoc__itemswrap\"><ul class=\"ht_toc_list\"><li class=\"\"><a href=\"#htoc-zdefiniowanie-zmiennych\">Zdefiniowanie zmiennych&nbsp;<\/a><\/li><li class=\"\"><a href=\"#htoc-funkcja-do-sk-adania-ofert\">Funkcja do sk\u0142adania ofert<\/a><\/li><li class=\"\"><a href=\"#htoc-funkcja-do-zako-czenia-aukcji-oraz-przelania-najwy-szej-oferty-do-beneficiera\">Funkcja do zako\u0144czenia aukcji, oraz przelania najwy\u017cszej oferty do beneficiera<\/a><\/li><li class=\"\"><a href=\"#htoc-funkcja-dla-os-b-kt-re-nie-wygra-y-aukcji-i-chc-odzyska-swoje-pieni-dze\">Funkcja dla os\u00f3b, kt\u00f3re nie wygra\u0142y aukcji i chc\u0105 odzyska\u0107 swoje pieni\u0105dze<\/a><\/li><\/ul><\/div><\/div>\n\n\n\n<p>Przejd\u017amy wi\u0119c do dalej. Wszystkie rzeczy, kt\u00f3rych mo\u017cesz nie rozumie\u0107 wyja\u015bnimy Ci w dalszej cz\u0119\u015bci tekstu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"htoc-zdefiniowanie-zmiennych\">Zdefiniowanie zmiennych&nbsp;<\/h3>\n\n\n\n<p>Zacznijmy od zdefiniowania zmiennych, kt\u00f3re b\u0119d\u0105 nam potrzebne do funkcjonowania smart kontraktu. Na pewno potrzebujemy :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>adres osoby do kt\u00f3rej zostanie przes\u0142ana najwy\u017csza oferta,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>czas, kiedy dana aukcja si\u0119 zako\u0144czy,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>adres osoby, kt\u00f3ra wystawi\u0142a najwy\u017csz\u0105 ofert\u0119,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ile wei to najwy\u017csza oferta,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>tablic\u0119 adres\u00f3w i ilo\u015b\u0107 pieni\u0119dzy jak\u0105 przelali do smart kontraktu, aby osoby, kt\u00f3re nie wygra\u0142y aukcji, mog\u0142y wyp\u0142aci\u0107 swoje pieni\u0105dze,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zmienn\u0105 czy aukcja jest zako\u0144czona lub nie.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pragma solidity 0.8.11;\n\ncontract Auction {\n\n&nbsp;&nbsp;&nbsp;&nbsp;address payable public beneficiary;\n\n&nbsp;&nbsp;&nbsp;&nbsp;uint public auctionEndTime;\n\n&nbsp;&nbsp;&nbsp;&nbsp;address public highestBidder;\n\n&nbsp;&nbsp;&nbsp;&nbsp;uint public highestBid;\n\n&nbsp;&nbsp;&nbsp;&nbsp;mapping(address =&gt; uint) pendingReturns;\n\n&nbsp;&nbsp;&nbsp;&nbsp;bool ended;\n\n}<\/code><\/pre>\n\n\n\n<p><strong>Czego mo\u017cesz nie zrozumie\u0107 z powy\u017cszego kodu?<\/strong><\/p>\n\n\n\n<p>Mapping w solidity to tablica klucz-warto\u015b\u0107, odpowiednik dictionary w innych j\u0119zykach.<\/p>\n\n\n\n<p>Je\u015bli nie wiesz czemu zmienna <code>auctionEndTime<\/code> jest podana w zwyk\u0142ym uintcie, to jest to z tego powodu, \u017ce czas kiedy aukcja si\u0119 zako\u0144czy b\u0119dzie podany w czasie unixowym.<\/p>\n\n\n\n<p>Stw\u00f3rzmy sobie constructor, kt\u00f3ry b\u0119dzie przyjmowa\u0142 adres do kt\u00f3rego zostanie przes\u0142ana najwy\u017csza oferta oraz ile czasu b\u0119dzie trwa\u0142a aukcja.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>constructor(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint biddingTime,\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address payable beneficiaryAddress\n\n&nbsp;&nbsp;&nbsp;&nbsp;) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beneficiary = beneficiaryAddress;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auctionEndTime = block.timestamp + biddingTime;\n\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n\n\n<p>Na co warto zwr\u00f3ci\u0107 uwag\u0119 ?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>block.timestamp<\/code> to zmienna, kt\u00f3ra oznacza po prostu jaki jest teraz czas podany oczywi\u015bcie jako czas unixowy.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"htoc-funkcja-do-sk-adania-ofert\">Funkcja do sk\u0142adania ofert<\/h3>\n\n\n\n<p>Teraz stw\u00f3rzmy sobie funkcj\u0119, kt\u00f3ra b\u0119dzie s\u0142u\u017cy\u0142a do sk\u0142adania swojej oferty. Funkcja ma zwraca\u0107 b\u0142\u0105d je\u015bli :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aukcja si\u0119 zako\u0144czy\u0142a,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nasza oferta b\u0119dzie ni\u017csza ni\u017c najwy\u017csza oferta.<\/li>\n<\/ul>\n\n\n\n<p>Na zako\u0144czenie wykonywania funkcji, funkcja wyemituje event, m\u00f3wi\u0105cy o tym \u017ce najwy\u017csza oferta si\u0119 zmienia. Aplikacja frontendowa mo\u017ce nas\u0142uchiwa\u0107 emitowanych event\u00f3w na smart contracie, dzi\u0119ki czemu, gdy tylko najwy\u017csza oferta si\u0119 zmieni, mo\u017ce ona j\u0105 zaktualizowa\u0107 w interfejsie u\u017cytkownika.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>event HighestBidIncreased(address bidder, uint amount);\n\n&nbsp;&nbsp;&nbsp;&nbsp;event AuctionEnded(address winner, uint amount);\n\n&nbsp;&nbsp;&nbsp;&nbsp;error AuctionAlreadyEnded();\n\n&nbsp;&nbsp;&nbsp;&nbsp;error BidNotHighEnough(uint highestBid);\n\n&nbsp;&nbsp;&nbsp;&nbsp;error AuctionNotYetEnded();\n\n&nbsp;&nbsp;&nbsp;&nbsp;error AuctionEndAlreadyCalled();\n\n&nbsp;&nbsp;&nbsp;&nbsp;function bid() external payable {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (block.timestamp &gt; auctionEndTime)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revert AuctionAlreadyEnded();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (msg.value &lt;= highestBid)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revert BidNotHighEnough(highestBid);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (highestBid != 0) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pendingReturns&#91;highestBidder] += highestBid;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highestBidder = msg.sender;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highestBid = msg.value;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emit HighestBidIncreased(msg.sender, msg.value);\n\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n\n\n<p>Jak widzisz w powy\u017cszym kodzie definiowane s\u0105 eventy z parametrami, kt\u00f3re mo\u017cemy wyemitowa\u0107 na blockchainie. Aby wyemitowa\u0107 event w solidity wpisujemy&nbsp;<\/p>\n\n\n\n<p><strong>emit<\/strong>&nbsp; + <strong>nazwa eventu<\/strong> i <strong>parametry<\/strong><\/p>\n\n\n\n<p>Zdefiniowali\u015bmy sobie swoje w\u0142asne errory, kt\u00f3re je\u015bli chcemy wywo\u0142a\u0107 wpisujemy<\/p>\n\n\n\n<p>revert + nazwa naszego erroru i parametry.<\/p>\n\n\n\n<p>Zapewne domy\u015bli\u0142e\u015b si\u0119 ju\u017c, \u017ce zamiast if\u00f3w i custom error\u00f3w mogli\u015bmy u\u017cy\u0107 requiera.<\/p>\n\n\n\n<p>Ta funkcja sprawdza czy aukcja si\u0119 ju\u017c nie zako\u0144czy\u0142a, czy msg.value jest wy\u017cszy ni\u017c najwy\u017csza oferta, je\u015bli tak aktualizujemy mapping <code>pendingReturns<\/code>, \u017ceby osoba, kt\u00f3ra z\u0142o\u017cy\u0142a wcze\u015bniej najwy\u017csz\u0105 ofert\u0119 mog\u0142a dosta\u0107 z powrotem swoje pieni\u0105dze. Przypisujemy najwy\u017csz\u0105 ofert\u0119 do <code>msg.value<\/code> oraz <code>highestBidder<\/code> do <code>msg.sender<\/code>, na ko\u0144cu wykonywania funkcji emitujemy event, kt\u00f3ry informuje, \u017ce najwy\u017csza oferta zosta\u0142a zwi\u0119kszona.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1024x576.jpg\" alt=\"\" class=\"wp-image-2527\" srcset=\"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1024x576.jpg 1024w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-300x169.jpg 300w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-768x432.jpg 768w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1536x864.jpg 1536w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-18x10.jpg 18w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-450x253.jpg 450w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-600x338.jpg 600w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-900x506.jpg 900w, https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"htoc-funkcja-do-zako-czenia-aukcji-oraz-przelania-najwy-szej-oferty-do-beneficiera\">Funkcja do zako\u0144czenia aukcji, oraz przelania najwy\u017cszej oferty do beneficiera<\/h3>\n\n\n\n<p>Teraz stw\u00f3rzmy funkcj\u0119 dzi\u0119ki, kt\u00f3rej po zako\u0144czonej aukcji adres beneficiary, b\u0119dzie m\u00f3g\u0142 przes\u0142a\u0107 do swojego portfela pieni\u0105dze.<\/p>\n\n\n\n<p>Ta funkcja powinna:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zwraca\u0107 b\u0142\u0105d je\u015bli aukcja si\u0119 jeszcze nie sko\u0144czy\u0142a,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zwraca\u0107 b\u0142\u0105d je\u015bli ta funkcja zosta\u0142a ju\u017c wywo\u0142ana,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zmienia\u0107 zmienna ended na true,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wyemitowa\u0107 event \u015bwiadcz\u0105cy o tym, \u017ce aukcja si\u0119 zako\u0144czy\u0142a,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>przes\u0142a\u0107 ilo\u015b\u0107 <a href=\"https:\/\/ethereum.org\/en\/\">Ethereum<\/a> r\u00f3wnowa\u017cn\u0105 do najwy\u017cszej oferty do beneficiera.<\/li>\n<\/ul>\n\n\n\n<p>&nbsp;&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function auctionEnd() external {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (block.timestamp &lt; auctionEndTime)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revert AuctionNotYetEnded();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ended)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revert AuctionEndAlreadyCalled();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ended = true;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emit AuctionEnded(highestBidder, highestBid);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beneficiary.transfer(highestBid);\n\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"htoc-funkcja-dla-os-b-kt-re-nie-wygra-y-aukcji-i-chc-odzyska-swoje-pieni-dze\">Funkcja dla os\u00f3b, kt\u00f3re nie wygra\u0142y aukcji i chc\u0105 odzyska\u0107 swoje pieni\u0105dze<\/h3>\n\n\n\n<p>Teraz, ostatnia funkcja, kt\u00f3rej potrzebujemy, aby nasz kontrakt by\u0142 gotowy! B\u0119dzie ona dla adres\u00f3w, kt\u00f3re nie wygra\u0142y aukcji, a chc\u0105 odzyska\u0107 swoje pieni\u0105dze. Zastan\u00f3wmy si\u0119 co powinna mie\u0107 w sobie taka funkcja :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>powinna sprawdza\u0107 ile nale\u017cy ci si\u0119 ethereum w mappingu pendingReturns oraz przypisa\u0107 t\u0105 warto\u015b\u0107 do zmiennej,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>powinna zmieni\u0107 ile ci si\u0119 nale\u017cy na 0,<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>powinna przes\u0142a\u0107 tyle Ethereum ile zapisali\u015bmy w zmiennej.<\/li>\n<\/ul>\n\n\n\n<p>No to do dzie\u0142a !<\/p>\n\n\n\n<p>&nbsp;&nbsp;<code>function withdraw() external{<\/code><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>uint amount = pendingReturns[msg.sender];<\/code><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>pendingReturns[msg.sender] = 0;<\/code><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>payable(msg.sender).transfer(amount);<\/code><\/p>\n\n\n\n<p>&nbsp;<code>&nbsp;&nbsp;&nbsp;}<\/code><\/p>\n\n\n\n<p>To ju\u017c koniec dzisiejszego tutorialu ! Nasz smart contract jest gotowy. W celu po\u0107wiczenia oraz utrwalenia sobie wiedzy, jako zadanie mo\u017cesz spr\u00f3bowa\u0107 zamieni\u0107 custom errory na requiry. Je\u015bli to jednak dla ciebie za ma\u0142o mo\u017cesz r\u00f3wnie\u017c ulepszy\u0107 ten kontrakt, aby da\u0142o si\u0119 w nim prowadzi\u0107 kilka aukcji na raz.<\/p>","protected":false},"excerpt":{"rendered":"<p>W poprzednim tutorialu dowiedzia\u0142e\u015b si\u0119, jak stworzy\u0107 smart contract, kt\u00f3ry jest walletem. W tym tutorialu postaramy si\u0119 utrwali\u0107 wiedz\u0119 z poprzedniego poradnika oraz poszerzy\u0107 j\u0105 o now\u0105.&nbsp; Przejd\u017amy wi\u0119c do dalej. Wszystkie rzeczy, kt\u00f3rych mo\u017cesz nie rozumie\u0107 wyja\u015bnimy Ci w dalszej cz\u0119\u015bci tekstu. Zdefiniowanie zmiennych&nbsp; Zacznijmy od zdefiniowania zmiennych, kt\u00f3re b\u0119d\u0105 nam potrzebne do funkcjonowania [&hellip;]<\/p>","protected":false},"author":16,"featured_media":2533,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"iawp_total_views":65,"footnotes":""},"categories":[1353],"tags":[],"class_list":["post-2524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriale"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ? - Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services<\/title>\n<meta name=\"description\" content=\"W tym artykule dowiesz si\u0119, mi\u0119dzy innymi, jak emitowa\u0107 eventy na smart kontraktach oraz zbudujesz co\u015b wi\u0119kszego ni\u017c \u201cprosty\u201d Wallet kontrakt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ? - Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services\" \/>\n<meta property=\"og:description\" content=\"W tym artykule dowiesz si\u0119, mi\u0119dzy innymi, jak emitowa\u0107 eventy na smart kontraktach oraz zbudujesz co\u015b wi\u0119kszego ni\u017c \u201cprosty\u201d Wallet kontrakt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/\" \/>\n<meta property=\"og:site_name\" content=\"Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/weknowtheropes\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-07T12:27:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-09T08:50:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Paulina Lewandowska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paulina Lewandowska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/\"},\"author\":{\"name\":\"Paulina Lewandowska\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#\\\/schema\\\/person\\\/9e092eb5882f3c64bff1c90187bc7edd\"},\"headline\":\"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ?\",\"datePublished\":\"2022-12-07T12:27:58+00:00\",\"dateModified\":\"2024-04-09T08:50:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/\"},\"wordCount\":802,\"publisher\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/clone.nextrope.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/1-1.jpg\",\"articleSection\":[\"Tutoriale\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/\",\"url\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/\",\"name\":\"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ? - Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/clone.nextrope.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/1-1.jpg\",\"datePublished\":\"2022-12-07T12:27:58+00:00\",\"dateModified\":\"2024-04-09T08:50:35+00:00\",\"description\":\"W tym artykule dowiesz si\u0119, mi\u0119dzy innymi, jak emitowa\u0107 eventy na smart kontraktach oraz zbudujesz co\u015b wi\u0119kszego ni\u017c \u201cprosty\u201d Wallet kontrakt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#primaryimage\",\"url\":\"https:\\\/\\\/clone.nextrope.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/1-1.jpg\",\"contentUrl\":\"https:\\\/\\\/clone.nextrope.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/1-1.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/wsparcie-konsultacje-technologie-web3-blockchain-nextrope\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#website\",\"url\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/\",\"name\":\"Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services\",\"description\":\"Fintech Software House\",\"publisher\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#organization\",\"name\":\"Nextrope\",\"url\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/clone.nextrope.com\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/logo-dark.png\",\"contentUrl\":\"https:\\\/\\\/clone.nextrope.com\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/logo-dark.png\",\"width\":180,\"height\":40,\"caption\":\"Nextrope\"},\"image\":{\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/weknowtheropes\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/nextrope\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/#\\\/schema\\\/person\\\/9e092eb5882f3c64bff1c90187bc7edd\",\"name\":\"Paulina Lewandowska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a25208a624321c409516a1c2dc6a3e6501f015e1360e7769e49b6a87d5617e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a25208a624321c409516a1c2dc6a3e6501f015e1360e7769e49b6a87d5617e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a25208a624321c409516a1c2dc6a3e6501f015e1360e7769e49b6a87d5617e?s=96&d=mm&r=g\",\"caption\":\"Paulina Lewandowska\"},\"url\":\"https:\\\/\\\/clone.nextrope.com\\\/pl\\\/author\\\/p-lewandowska\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ? - Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services","description":"W tym artykule dowiesz si\u0119, mi\u0119dzy innymi, jak emitowa\u0107 eventy na smart kontraktach oraz zbudujesz co\u015b wi\u0119kszego ni\u017c \u201cprosty\u201d Wallet kontrakt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/","og_locale":"pl_PL","og_type":"article","og_title":"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ? - Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services","og_description":"W tym artykule dowiesz si\u0119, mi\u0119dzy innymi, jak emitowa\u0107 eventy na smart kontraktach oraz zbudujesz co\u015b wi\u0119kszego ni\u017c \u201cprosty\u201d Wallet kontrakt.","og_url":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/","og_site_name":"Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services","article_publisher":"https:\/\/www.facebook.com\/weknowtheropes\/","article_published_time":"2022-12-07T12:27:58+00:00","article_modified_time":"2024-04-09T08:50:35+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1.jpg","type":"image\/jpeg"}],"author":"Paulina Lewandowska","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Paulina Lewandowska","Szacowany czas czytania":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#article","isPartOf":{"@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/"},"author":{"name":"Paulina Lewandowska","@id":"https:\/\/clone.nextrope.com\/pl\/#\/schema\/person\/9e092eb5882f3c64bff1c90187bc7edd"},"headline":"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ?","datePublished":"2022-12-07T12:27:58+00:00","dateModified":"2024-04-09T08:50:35+00:00","mainEntityOfPage":{"@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/"},"wordCount":802,"publisher":{"@id":"https:\/\/clone.nextrope.com\/pl\/#organization"},"image":{"@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#primaryimage"},"thumbnailUrl":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1.jpg","articleSection":["Tutoriale"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/","url":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/","name":"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ? - Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services","isPartOf":{"@id":"https:\/\/clone.nextrope.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#primaryimage"},"image":{"@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#primaryimage"},"thumbnailUrl":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1.jpg","datePublished":"2022-12-07T12:27:58+00:00","dateModified":"2024-04-09T08:50:35+00:00","description":"W tym artykule dowiesz si\u0119, mi\u0119dzy innymi, jak emitowa\u0107 eventy na smart kontraktach oraz zbudujesz co\u015b wi\u0119kszego ni\u017c \u201cprosty\u201d Wallet kontrakt.","breadcrumb":{"@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#primaryimage","url":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1.jpg","contentUrl":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2022\/12\/1-1.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/clone.nextrope.com\/pl\/jak-stworzyc-prosty-smart-kontrat-do-obslugi-aukcji\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/clone.nextrope.com\/pl\/wsparcie-konsultacje-technologie-web3-blockchain-nextrope\/"},{"@type":"ListItem","position":2,"name":"Jak stworzy\u0107 prosty smart kontrat do obs\u0142ugi aukcji ?"}]},{"@type":"WebSite","@id":"https:\/\/clone.nextrope.com\/pl\/#website","url":"https:\/\/clone.nextrope.com\/pl\/","name":"Nextrope - Your Trusted Partner for Blockchain Development and Advisory Services","description":"Fintech Software House","publisher":{"@id":"https:\/\/clone.nextrope.com\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/clone.nextrope.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/clone.nextrope.com\/pl\/#organization","name":"Nextrope","url":"https:\/\/clone.nextrope.com\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/clone.nextrope.com\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2020\/07\/logo-dark.png","contentUrl":"https:\/\/clone.nextrope.com\/wp-content\/uploads\/2020\/07\/logo-dark.png","width":180,"height":40,"caption":"Nextrope"},"image":{"@id":"https:\/\/clone.nextrope.com\/pl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/weknowtheropes\/","https:\/\/www.linkedin.com\/company\/nextrope"]},{"@type":"Person","@id":"https:\/\/clone.nextrope.com\/pl\/#\/schema\/person\/9e092eb5882f3c64bff1c90187bc7edd","name":"Paulina Lewandowska","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/36a25208a624321c409516a1c2dc6a3e6501f015e1360e7769e49b6a87d5617e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/36a25208a624321c409516a1c2dc6a3e6501f015e1360e7769e49b6a87d5617e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/36a25208a624321c409516a1c2dc6a3e6501f015e1360e7769e49b6a87d5617e?s=96&d=mm&r=g","caption":"Paulina Lewandowska"},"url":"https:\/\/clone.nextrope.com\/pl\/author\/p-lewandowska\/"}]}},"_links":{"self":[{"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/posts\/2524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/comments?post=2524"}],"version-history":[{"count":4,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/posts\/2524\/revisions"}],"predecessor-version":[{"id":2535,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/posts\/2524\/revisions\/2535"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/media\/2533"}],"wp:attachment":[{"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/media?parent=2524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/categories?post=2524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clone.nextrope.com\/pl\/wp-json\/wp\/v2\/tags?post=2524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}