Jak stworzyć prosty smart kontrat do obsługi aukcji ?

Paulina Lewandowska

07 gru 2022
Jak stworzyć prosty smart kontrat do obsługi aukcji ?

W poprzednim tutorialu dowiedziałeś się, jak stworzyć smart contract, który jest walletem. W tym tutorialu postaramy się utrwalić wiedzę z poprzedniego poradnika oraz poszerzyć ją o nową. 

Przejdźmy więc do dalej. Wszystkie rzeczy, których możesz nie rozumieć wyjaśnimy Ci w dalszej części tekstu.

Zdefiniowanie zmiennych 

Zacznijmy od zdefiniowania zmiennych, które będą nam potrzebne do funkcjonowania smart kontraktu. Na pewno potrzebujemy :

  • adres osoby do której zostanie przesłana najwyższa oferta,
  • czas, kiedy dana aukcja się zakończy,
  • adres osoby, która wystawiła najwyższą ofertę,
  • ile wei to najwyższa oferta,
  • tablicę adresów i ilość pieniędzy jaką przelali do smart kontraktu, aby osoby, które nie wygrały aukcji, mogły wypłacić swoje pieniądze,
  • zmienną czy aukcja jest zakończona lub nie.
pragma solidity 0.8.11;

contract Auction {

    address payable public beneficiary;

    uint public auctionEndTime;

    address public highestBidder;

    uint public highestBid;

    mapping(address => uint) pendingReturns;

    bool ended;

}

Czego możesz nie zrozumieć z powyższego kodu?

Mapping w solidity to tablica klucz-wartość, odpowiednik dictionary w innych językach.

Jeśli nie wiesz czemu zmienna auctionEndTime jest podana w zwykłym uintcie, to jest to z tego powodu, że czas kiedy aukcja się zakończy będzie podany w czasie unixowym.

Stwórzmy sobie constructor, który będzie przyjmował adres do którego zostanie przesłana najwyższa oferta oraz ile czasu będzie trwała aukcja.

constructor(

        uint biddingTime,

        address payable beneficiaryAddress

    ) {

        beneficiary = beneficiaryAddress;

        auctionEndTime = block.timestamp + biddingTime;

    }

Na co warto zwrócić uwagę ?

  • block.timestamp to zmienna, która oznacza po prostu jaki jest teraz czas podany oczywiście jako czas unixowy.

Funkcja do składania ofert

Teraz stwórzmy sobie funkcję, która będzie służyła do składania swojej oferty. Funkcja ma zwracać błąd jeśli :

  • aukcja się zakończyła,
  • nasza oferta będzie niższa niż najwyższa oferta.

Na zakończenie wykonywania funkcji, funkcja wyemituje event, mówiący o tym że najwyższa oferta się zmienia. Aplikacja frontendowa może nasłuchiwać emitowanych eventów na smart contracie, dzięki czemu, gdy tylko najwyższa oferta się zmieni, może ona ją zaktualizować w interfejsie użytkownika.

event HighestBidIncreased(address bidder, uint amount);

    event AuctionEnded(address winner, uint amount);

    error AuctionAlreadyEnded();

    error BidNotHighEnough(uint highestBid);

    error AuctionNotYetEnded();

    error AuctionEndAlreadyCalled();

    function bid() external payable {

        if (block.timestamp > auctionEndTime)

            revert AuctionAlreadyEnded();

        if (msg.value <= highestBid)

            revert BidNotHighEnough(highestBid);

        if (highestBid != 0) {

            pendingReturns[highestBidder] += highestBid;

        }

        highestBidder = msg.sender;

        highestBid = msg.value;

        emit HighestBidIncreased(msg.sender, msg.value);

    }

Jak widzisz w powyższym kodzie definiowane są eventy z parametrami, które możemy wyemitować na blockchainie. Aby wyemitować event w solidity wpisujemy 

emit  + nazwa eventu i parametry

Zdefiniowaliśmy sobie swoje własne errory, które jeśli chcemy wywołać wpisujemy

revert + nazwa naszego erroru i parametry.

Zapewne domyśliłeś się już, że zamiast ifów i custom errorów mogliśmy użyć requiera.

Ta funkcja sprawdza czy aukcja się już nie zakończyła, czy msg.value jest wyższy niż najwyższa oferta, jeśli tak aktualizujemy mapping pendingReturns, żeby osoba, która złożyła wcześniej najwyższą ofertę mogła dostać z powrotem swoje pieniądze. Przypisujemy najwyższą ofertę do msg.value oraz highestBidder do msg.sender, na końcu wykonywania funkcji emitujemy event, który informuje, że najwyższa oferta została zwiększona.

Funkcja do zakończenia aukcji, oraz przelania najwyższej oferty do beneficiera

Teraz stwórzmy funkcję dzięki, której po zakończonej aukcji adres beneficiary, będzie mógł przesłać do swojego portfela pieniądze.

Ta funkcja powinna:

  • zwracać błąd jeśli aukcja się jeszcze nie skończyła,
  • zwracać błąd jeśli ta funkcja została już wywołana,
  • zmieniać zmienna ended na true,
  • wyemitować event świadczący o tym, że aukcja się zakończyła,
  • przesłać ilość Ethereum równoważną do najwyższej oferty do beneficiera.

  

function auctionEnd() external {

        if (block.timestamp < auctionEndTime)

            revert AuctionNotYetEnded();

        if (ended)

            revert AuctionEndAlreadyCalled();

        ended = true;

        emit AuctionEnded(highestBidder, highestBid);

        beneficiary.transfer(highestBid);

    }

Funkcja dla osób, które nie wygrały aukcji i chcą odzyskać swoje pieniądze

Teraz, ostatnia funkcja, której potrzebujemy, aby nasz kontrakt był gotowy! Będzie ona dla adresów, które nie wygrały aukcji, a chcą odzyskać swoje pieniądze. Zastanówmy się co powinna mieć w sobie taka funkcja :

  • powinna sprawdzać ile należy ci się ethereum w mappingu pendingReturns oraz przypisać tą wartość do zmiennej,
  • powinna zmienić ile ci się należy na 0,
  • powinna przesłać tyle Ethereum ile zapisaliśmy w zmiennej.

No to do dzieła !

  function withdraw() external{

        uint amount = pendingReturns[msg.sender];

        pendingReturns[msg.sender] = 0;

        payable(msg.sender).transfer(amount);

    }

To już koniec dzisiejszego tutorialu ! Nasz smart contract jest gotowy. W celu poćwiczenia oraz utrwalenia sobie wiedzy, jako zadanie możesz spróbować zamienić custom errory na requiry. Jeśli to jednak dla ciebie za mało możesz również ulepszyć ten kontrakt, aby dało się w nim prowadzić kilka aukcji na raz.

Tagi

Most viewed


Never miss a story

Stay updated about Nextrope news as it happens.

You are subscribed

Aleph Zero Bridges: Czym jest MOST i Jak on Działa?

Karolina

05 mar 2024
Aleph Zero Bridges: Czym jest MOST i Jak on Działa?

Znaczenie interoperacyjności w różnych ekosystemach jest ogromne. Jest wiele protokołów, zdolność do transferu aktywów i informacji między różnymi blockchainami jest więc niezbędna. Jak do tego podchodzi Aleph Zero i czym jest MOST?

Geneza MOSTu: Most do Ethereum

Wizja interoperacyjności Aleph Zero

W sercu strategii Aleph Zero mającej na celu stworzenie bardziej połączonego świata blockchain znajduje się MOST, awangardowy most zaprojektowany w celu bezproblemowego połączenia Aleph Zero z ekosystemem Ethereum. MOST stanowi krytyczny krok naprzód w zobowiązaniu Aleph Zero do budowy solidnej, niezależnej i wszechstronnej platformy. Odzwierciedla wizję ekosystemu blockchain, który jest nie tylko samowystarczalny, ale także w pełni zintegrowany z szerszym krajobrazem cyfrowych aktywów.

Rola MOST w zwiększaniu interoperacyjności Aleph Zero z Ethereum

MOST to strategiczny zasób, który zwiększa interoperacyjność Aleph Zero z Ethereum. Umożliwiając bezpośrednią ścieżkę dla transferu aktywów między Aleph Zero a Ethereum, MOST umożliwia zarówno deweloperom, jak i użytkownikom wykorzystanie mocnych stron obu platform. Ta synergia zwiększa potencjał zdecentralizowanych aplikacji (dApps) i projektów finansów zdecentralizowanych (DeFi), pozwalając im korzystać z połączonych zalet skalowalności Aleph Zero i żywego ekosystemu Ethereum.

READ: "What is Aleph Zero?"

Architektura i funkjonalności MOST

Przegląd projektu MOST

Architektura MOST opiera się na projekcie opartym na strażnikach, priorytetowo traktującym bezpieczeństwo i prostotę w transferze aktywów. Ten model projektowy zapewnia, że most działa z najwyższą integralnością i niezawodnością. Strażnicy, wybierani poprzez skrupulatny proces, odgrywają kluczową rolę w utrzymaniu operacyjnej doskonałości mostu. Każdy strażnik nadzoruje dwie instancje konfiguracji - jedną dla Testnetu i jedną dla Mainnetu - zapewniając tym samym solidną strukturę testowania i wdrożeń, która zabezpiecza przed podatnościami.

zParachain bridge
zParachain bridge, Source

"Strażnicy MOST"

Strażnicy MOST nie są tylko opiekunami infrastruktury technicznej mostu; są oni kluczowymi elementami jego modelu zarządzania. Posiadając kontrolę nad kluczami zarządzania zarówno Aleph Zero, jak i Ethereum, strażnicy posiadają autorytet do wprowadzania zmian w składzie komitetu, przeprowadzania aktualizacji kontraktów i podejmowania innych istotnych funkcji zarządzania. Ta konfiguracja portfela wielokrotnego podpisu zapewnia zdecentralizowany mechanizm kontroli, istotny dla utrzymania bezpieczeństwa i integralności mostu.

Główne cechy: Obniżone opłaty, Zachęcanie do płynności i Skupienie na bezpieczeństwie

MOST został zaprojektowany z uwzględnieniem kilku kluczowych cech mających na celu optymalizację doświadczenia użytkownika i wzrost ekosystemu. Jedną z jego wyróżniających się cech jest znaczne obniżenie opłat za mostowanie aktywów, takich jak ETH, stablecoiny i tokeny z Ethereum do Aleph Zero. Struktura opłat jest strategicznie zaprojektowana w celu przyciągnięcia płynności do ekosystemu Aleph Zero, poprawiając jego żywotność i użyteczność.

Techniczny fundament Aleph Zero Bridges

Bezpieczeństwo i prostota

Projekt MOST koncentruje się na bezpieczeństwie, prostocie i łatwości użytkowania. Wykorzystuje model oparty na strażnikach dla zapewnienia bezpieczeństwa i oferuje prosty interfejs dla użytkowników. Prace rozwojowe były otwarte i skrupulatne, a projekt ma zamiar udostępnić swoje źródło publicznie, zgodnie z zasadami open-source i zapewniając transparentność.

Zarządzanie i kontrola

Zarządzanie w MOST wykorzystuje portfel multisig, pozwalając strażnikom zarządzać operacjami demokratycznie. Ta konfiguracja zapewnia zdecentralizowaną kontrolę, z mechanizmami do aktualizacji kontraktów i zmian w komitecie, zwiększając bezpieczeństwo i elastyczność.

Tutaj możesz śledzić nadchodzące aktualizacje dotyczące Aleph Zero bridges: BLOG

Wpływ na ekosystem

DeFi na Aleph Zero

MOST ułatwia napływ płynności i stablecoinów do Aleph Zero, znacząco zwiększając jego sektor DeFi. Ten most do Ethereum sprzyja innowacji, zaangażowaniu użytkowników i wzrostowi ekosystemu.

MOST i więcej

Integracja z Router Protocol

Partnerstwo Aleph Zero z Router Protocol rozszerza jego łączność z różnymi blockchainami. Współpraca koncentruje się na uproszczeniu operacji międzyłańcuchowych poprzez Framework Cross-chain Intent (CCIP), poszerzając interoperacyjność Aleph Zero.

Aleph Zero Integration with Router Protocol
Aleph Zeri + Router (ŹRÓDŁO: Aleph Zero)

Bridge zParachain do Polkadot

Z wykorzystaniem slotu parachain, bridge zParachain łączy Aleph Zero i Polkadot bez uczynienia Aleph Zero parachainem. To innowacyjne podejście zwiększa komunikację międzyłańcuchową, wzmacniając pozycję interoperacyjności Aleph Zero.

Aleph Zero MOST
ŹRÓDŁO: Aleph Zero

Dlaczego to ma znaczenie

Strategia Aleph Zero bridges podkreśla potrzebę stabilnych, bezpiecznych i wszechstronnych połączeń między blockchainami. Zapewniając szeroką łączność, Aleph Zero toruje drogę do bardziej zintegrowanego ekosystemu blockchain, gdzie bezproblemowa interoperacyjność zwiększa ogólną użyteczność i dostępność technologii zdecentralizowanych.

Przeczytaj koniecznie: "Aleph Zero vs Solana: A Comparative Analysis"

Podsumowanie

Działania Aleph Zero w dziedzinie mostów technologicznych oznaczają krok w kierunku zjednoczonego świata blockchain. Mosty Aleph Zero? Skupiając się na kluczowych obszarach, takich jak bezpieczeństwo, prostota i integracja ekosystemu, Aleph Zero kształtuje przyszłość interoperacyjności blockchain, wspierając innowacje i otwierając nowe możliwości dla sektorów DeFi i dApp.

Jeśli jesteś zainteresowany wykorzystaniem Aleph-Zero lub innych rozwiązań opartych na blockchainie dla swojego projektu, skontaktuj się z contact@nextrope.com

FAQ

1. Jaki jest główny cel mostu MOST w ekosystemie Aleph Zero?

  • MOST został zaprojektowany w celu zwiększenia interoperacyjności Aleph Zero z Ethereum, umożliwiając bezproblemowy transfer aktywów między dwoma platformami.

2. W jaki sposób projekt oparty na strażnikach MOST zwiększa jego bezpieczeństwo?

  • Projekt oparty na strażnikach priorytetowo traktuje bezpieczeństwo i prostotę w transferze aktywów. Strażnicy, którzy są starannie wybierani, nadzorują działanie mostu zarówno na Testnet, jak i na Mainnet.

3. Jakie są główne cechy MOST i jak korzystają z nich użytkownicy?

  • Główne cechy MOST obejmują obniżone opłaty za bridgowanie aktywów, takie jak ETH, stablecoiny i tokeny z Ethereum do Aleph Zero. Ten projekt ma na celu przyciągnięcie płynności do Aleph Zero, poprawiając żywotność i użyteczność jego ekosystemu oraz optymalizując doświadczenie użytkownika.

Efekty Sieciowe w Projektach Krypto

Kajetan Olas

04 mar 2024
Efekty Sieciowe w Projektach Krypto

Termin "efekty sieciowe" często pojawia się jako czynnik leżący u podstaw ekspansywnego wzrostu kryptowalut. Ale co dokładnie oznaczają efekty sieciowe w projektach kryptowalutowych i dlaczego są tak ważne? W swojej istocie, efekt sieciowy występuje, gdy produkt lub usługa staje się bardziej wartościowa, im więcej osób z niej korzysta. To zjawisko nie jest wyłączne dla ery cyfrowej; miało wpływ na przyjęcie i sukces technologii sięgających od telefonu po internet. Jednakże, w kontekście kryptowalut, efekty sieciowe nie tylko napędzają adopcję, ale są również bezpośrednio skorelowane z kapitalizacją rynkową. Ten artykuł zagłębia się w mechanikę efektów sieciowych w krypto i omawia, jak bardzo adopcja wpływa na wartość projektów.

Mierzenie Efektów Sieciowych

Jedną z najbardziej rozpoznawalnych metod mierzenia tych efektów jest Prawo Metcalfe'a, które zakłada, że wartość sieci jest proporcjonalna do kwadratu liczby jej użytkowników. Badania wykazały, że to prawo szczególnie dobrze stosuje się do sieci blockchain. W praktyce, bazę użytkowników (N) mierzymy jako liczbę węzłów lub aktywnych adresów.

Bitcoin i Ethereum - Case Studies

  • Bitcoin: Jako pierwsza kryptowaluta, Bitcoin wykazał znaczącą korelację między wielkością swojej sieci a wartością. Dane historyczne pokazują, że okresy szybkiego wzrostu liczby aktywnych portfeli są ściśle śledzone przez wzrosty ceny rynkowej Bitcoina. Współczynnik korelacji Pearsona między ceną BTC a kwadratem liczby węzłów wynosi około 0,9. W przypadku liczby aktywnych adresów jest to około 0,95. Ten wzorzec podkreśla, jak ważne są efekty sieciowe.
  • Ethereum: Użyteczność Ethereum wykracza poza zwykłe transakcje finansowe, obejmując smart kontrakty i zdecentralizowane aplikacje (DApps). Ta dodatkowa funkcjonalność przyciąga różnorodną bazę użytkowników, dodatkowo wzmacniając jego efekty sieciowe. Współczynnik korelacji Pearsona przyjmuje wartości podobne jak w przypadku BTC.

Efekty Sieciowe i Adopcja Kryptowalut

Adopcja kryptowalut jest znacząco wspierana przez efekty sieciowe, które nie tylko zwiększają wartość cyfrowej waluty, ale także przyczyniają się do jej powszechnej akceptacji i użytkowania. W miarę wzrostu sieci użytkowników, kryptowaluta staje się bardziej użyteczna i pożądana, tworząc korzystny cykl, który przyciąga jeszcze więcej użytkowników. Jest to szczególnie widoczne w kontekście płatności i przekazów pieniężnych, gdzie wartość sieci kryptowaluty rośnie wraz z liczbą osób i instytucji chętnych do akceptacji i transakcji w walucie.

Zwiększanie Bezpieczeństwa i Wiarygodności

Jednym z kluczowych sposobów, w jakie efekty sieciowe przyczyniają się do adopcji kryptowalut, jest poprawa bezpieczeństwa i wiarygodności sieci. Technologia blockchain, będąca podstawą większości kryptowalut, staje się bardziej bezpieczna, im więcej uczestników dołącza do sieci. Zdecentralizowany charakter blockchainu sprawia, że coraz trudniej jest złośliwym aktorom naruszyć integralność sieci, co z kolei wzmacnia zaufanie użytkowników do systemu. To zwiększone bezpieczeństwo jest bezpośrednim skutkiem efektów sieciowych, ponieważ większa sieć zapewnia lepszą odporność na ataki.

Zwiększanie płynności na rynku

Większa baza użytkowników oznacza więcej transakcji i, co za tym idzie, większą płynność, co ułatwia użytkownikom kupowanie i sprzedawanie bez powodowania znaczących wahań cen. Jest to szczególnie ważne dla Dapps, których natywne tokeny są handlowane na DEX-ach takich jak Uniswap. Powszechną praktyką jest, że zespoły zapewniają początkową płynność, która sprzyja handlowi, ale znacznie lepiej, gdy płynność ta jest zapewniana przez użytkowników.

Metody Zwiększania Efektów Sieciowych

Bardzo silna korelacja między wartością projektów blockchainowych a ich bazą użytkowników jasno pokazuje, że adopcja jest bardzo ważna. Jak więc projekty powinny sprzyjać wzrostowi swojej bazy użytkowników?

Aidropy

Airdropy są bardzo powszechnym (i stosunkowo tanim) sposobem na zwiększenie bazy użytkowników sieci na jej początku. Sposób ich działania jest następujący: projekty przydzielają pewną liczbę tokenów (np. 1% całkowitej podaży) osobom, które angażują się w projekt. Na przykład, projekt może ogłosić, że osoby, które retweetują i polubią ich posty na X określoną liczbę razy, otrzymają pewną liczbę tokenów. Innym rodzajem zaangażowania może być uczestnictwo w testnecie i dostarczanie feedbacku założycielom. Airdropy są skuteczne, ponieważ nawet jeśli tylko 5% tych przyciągniętych użytkowników zostanie na dłuższy okres, to i tak jest to świetny zwrot z inwestycji.

Subsydiowane Incentywy

Kiedy projekt dopiero się rozpoczyna, dobrym pomysłem może być przeznaczenie części kapitału na wyższe incentywy dla wczesnych użytkowników. Przykładem może być zapewnienie wyższego APY dla stakerów (jak 10%, zamiast 5%) przez pierwsze 6 miesięcy. Chociaż takie subsydiowane zachęty są dobre na początku, muszą kiedyś się skończyć. Dzieje się tak, ponieważ są niezrównoważone w długim terminie. Przykładem tego, co może się stać, jeśli niezrównoważone zachęty potrwają zbyt długo, jest protokół Anchor. Anchor chciał przyciągnąć wielu użytkowników i osiągnąć efekty sieciowe, oferując 15% APY. W tym sensie odniósł sukces, ale ponieważ nie zakończył programu w odpowiednim czasie, protokół stał się niewypłacalny i zbankrutował. Niemniej trzeba przyznać, że podczas gdy sieć jeszcze funkcjonowała to jej wzrost był naprawdę wykładniczy.

Inspirująca Wizja

Prawdopodobnie najbardziej zrównoważonym i organicznym sposobem na zwiększenie bazy użytkowników jest pokazanie społeczności inspirującej wizji związanej z projektem. Chodzi o stworzenie protokołu, który w pewien sposób obiecuje zmienić świat na lepsze. Przykładem może być Cardano, które zdobyło ogromną bazę fanów skupioną wokół swojej misji. Stało się tak pomimo kiepskich warunków użytkowania protokołu w początkowej fazie.

Wyzwania i Ograniczenia

Pomimo pozytywnego wpływu efektów sieciowych na adopcję projektów kryptowalutowych i ich wartość, należy zauważyćpewne znaczące wyzwania i ograniczenia.

Problemy ze skalowalnością

Podstawowym wyzwaniem, jakie stawiają efekty sieciowe, jest skalowalność. W miarę wzrostu sieci, leżąca u jej podstaw technologia blockchain musi być w stanie obsłużyć rosnącą liczbę transakcji szybko i efektywnie. Jednak wiele kryptowalut, w tym Bitcoin i Ethereum, napotkało trudności w skalowaniu swoich sieci, aby sprostać zapotrzebowaniu, nie naruszając przy tym bezpieczeństwa lub decentralizacji. Jest to najważniejszy czynnik hamujący adopcję, ponieważ wielu użytkowników woli korzystać z scentralizowanego systemu płatności, po prostu dlatego, że jest on bardziej wydajny. Przykładowo VISA może przetwarzać 24k TPS (transakcji na sekundę), podczas gdy BTC może przetwarzać 7 TPS.

https://www.okx.com/learn/blockchain-trilemma-guide

Podsumowanie

Chociaż efekty sieciowe są potężnym motorem napędowym adopcji i wartości kryptowalut, stwarzają również znaczące wyzwania w kontekście skalowalności, które muszą zostać rozwiązane. Jednak w przypadku powstających projektów korzyści płynące ze zwiększonej adopcji przeważają nad kosztami, i pokazano, że największym czynnikiem wpływającym na wartość tych projektów jest ich baza użytkowników.

Jeśli szukasz sposobów na zwiększenie liczby użytkowników swojego projektu DeFi, prosimy o kontakt na adres contact@nextrope.com. Nasz zespół jest gotów pomóc Ci stworzyć strategię, która zwiększy twoją społeczność i zapewni długoterminowy wzrost.

FAQ

Czym są efekty sieciowe?

  • Efekty sieciowe to termin opisujący sytuację, gdy wartość sieci rośnie więcej niż proporcjonalnie w stosunku do liczby użytkowników.

Jak efekty sieciowe wpływają na wycenę projektu?

  • Istnieje bardzo silna korelacja między kwadratem liczby aktywnych adresów/węzłów a kapitalizacją rynkową projektów.

Jak zwiększyć bazę użytkowników i występowanie efektów sieciowych w moim projekcie?

  • Poprzez budowanie społeczności. Można to osiągnąć, poprzez zasianie inspirującej wizji, airdropy i subsydiowane incentywy dla użytkowników.