Ruka hadi kwenye maudhui makuu

Jinsi ya kutekeleza soko la ERC-721

mikataba mahiri
erc-721
Solidity
tokeni
Kati
Alberto Cuesta Cañada
19 Machi 2020
6 dakika za kusoma

Katika makala haya, nitakuonyesha jinsi ya kuandika kodi ya Craigslist kwa ajili ya mnyororo wa vitalu wa Ethereum.

Kabla ya Gumtree, Ebay na Craigslist, mbao za matangazo zilikuwa zimetengenezwa zaidi kwa gome la mti au karatasi. Kulikuwa na mbao za matangazo kwenye korido za shule, magazeti, taa za barabarani, na mbele ya maduka.

Yote hayo yalibadilika na ujio wa intaneti. Idadi ya watu ambao wangeweza kuona ubao maalum wa matangazo iliongezeka kwa viwango vikubwa sana. Pamoja na hayo, masoko yanayowakilishwa yalikuwa na ufanisi zaidi na kukua hadi kufikia ukubwa wa kimataifa. Ebay ni biashara kubwa ambayo asili yake inatokana na mbao hizi za matangazo za kimaumbile.

Pamoja na mnyororo wa vitalu masoko haya yanatarajiwa kubadilika kwa mara nyingine tena, hebu nikuonyeshe jinsi gani.

Uchumaji wa Mapato

Muundo wa biashara wa ubao wa matangazo wa mnyororo wa vitalu wa umma utahitaji kuwa tofauti na ule wa Ebay na kampuni nyingine.

Kwanza, kuna mtazamo wa ugatuzi. Majukwaa yaliyopo yanahitaji kudumisha seva zao wenyewe. Jukwaa lililogatuliwa hudumishwa na watumiaji wake, hivyo gharama ya kuendesha jukwaa kuu inashuka hadi sifuri kwa mmiliki wa jukwaa.

Kisha kuna upande wa mbele (front end), tovuti au kiolesura kinachotoa ufikiaji wa jukwaa. Hapa kuna chaguzi nyingi. Wamiliki wa jukwaa wanaweza kuzuia ufikiaji na kulazimisha kila mtu kutumia kiolesura chao, na kutoza ada. Wamiliki wa jukwaa pia wanaweza kuamua kufungua ufikiaji (Nguvu kwa Watu!) na kuruhusu mtu yeyote kujenga violesura kwenye jukwaa. Au wamiliki wanaweza kuamua mbinu yoyote katikati ya misimamo hiyo miwili.

Viongozi wa biashara wenye maono zaidi yangu watajua jinsi ya kuchuma mapato kutokana na hili. Ninachokiona tu ni kwamba hii ni tofauti na hali ilivyo sasa na huenda ikaleta faida.

Zaidi ya hayo, kuna mtazamo wa uendeshaji wa kiotomatiki na malipo. Baadhi ya vitu vinaweza kufanywa kuwa tokeni kwa ufanisi mkubwa (opens in a new tab) na kuuzwa kwenye ubao wa matangazo. Rasilimali zilizofanywa kuwa tokeni huhamishwa kwa urahisi katika mnyororo wa vitalu. Njia za malipo zenye utata mkubwa zinaweza kutekelezwa kwa urahisi katika mnyororo wa vitalu.

Ninahisi tu fursa ya biashara hapa. Ubao wa matangazo usio na gharama za uendeshaji unaweza kutekelezwa kwa urahisi, huku njia tata za malipo zikijumuishwa katika kila muamala. Nina uhakika mtu atakuja na wazo kuhusu nini cha kutumia kwa ajili ya hili.

Nina furaha tu kuijenga. Hebu tuangalie kodi.

Utekelezaji

Muda fulani uliopita tulianzisha hifadhi ya chanzo wazi (opens in a new tab) yenye mifano ya utekelezaji wa matukio ya biashara na mambo mengine mazuri, tafadhali iangalie.

Kodi ya Ubao wa Matangazo wa Ethereum (opens in a new tab) huu ipo hapo, tafadhali itumie na uifanyie majaribio yote. Tambua tu kwamba kodi haijakaguliwa na unahitaji kufanya uchunguzi wako mwenyewe kabla ya kuruhusu pesa kuingia humo.

Misingi ya ubao huu si migumu. Matangazo yote kwenye ubao yatakuwa tu muundo (struct) wenye sehemu chache:

struct Trade {
  address poster;
  uint256 item;
  uint256 price;
  bytes32 status; // Wazi, Imetekelezwa, Imeghairiwa
}

Kwa hivyo kuna mtu anayeweka tangazo. Bidhaa inayouzwa. Bei ya bidhaa. Hali ya biashara ambayo inaweza kuwa wazi, imetekelezwa au imeghairiwa.

Biashara hizi zote zitawekwa kwenye ramani (mapping). Kwa sababu kila kitu katika Solidity kinaonekana kuwa ramani. Pia kwa sababu ni rahisi.

mapping(uint256 => Trade) public trades;

Kutumia ramani kunamaanisha tu kwamba inabidi tupate kitambulisho (id) kwa kila tangazo kabla ya kuliweka, na tutahitaji kujua kitambulisho cha tangazo kabla ya kuweza kulifanyia kazi. Kuna njia nyingi za kushughulikia hili iwe katika mkataba mahiri au katika upande wa mbele. Tafadhali uliza ikiwa unahitaji miongozo.

Kisha inakuja swali la je, ni vitu gani hivyo tunavyoshughulika navyo, na ni sarafu gani hii inayotumika kulipia muamala.

Kwa bidhaa, tutaomba tu zitekeleze kiolesura cha ERC-721 (opens in a new tab), ambacho kwa kweli ni njia tu ya kuwakilisha vitu vya ulimwengu halisi katika mnyororo wa vitalu, ingawa hufanya kazi vizuri zaidi na rasilimali za kidijitali (opens in a new tab). Tutabainisha mkataba wetu wenyewe wa ERC721 katika konstrukta, ikimaanisha kwamba rasilimali zozote katika ubao wetu wa matangazo zinahitaji kuwa zimefanywa kuwa tokeni mapema.

Kwa malipo, tutafanya kitu kama hicho. Miradi mingi ya mnyororo wa vitalu hufafanua sarafu-fiche yao wenyewe ya ERC-20 (opens in a new tab). Baadhi ya mingine hupendelea kutumia ile iliyozoeleka kama DAI. Katika ubao huu wa matangazo, unahitaji tu kuamua wakati wa ujenzi sarafu yako itakuwa nini. Rahisi.

constructor (
  address _currencyTokenAddress, address _itemTokenAddress
) public {
  currencyToken = IERC20(_currencyTokenAddress);
  itemToken = IERC721(_itemTokenAddress);
  tradeCounter = 0;
}

Tunakaribia kufika. Tuna matangazo, bidhaa za kufanyia biashara na sarafu kwa ajili ya malipo. Kutengeneza tangazo kunamaanisha kuweka bidhaa kwenye akaunti ya amana (escrow) ili kuonyesha kwamba unayo na kwamba hujaiweka mara mbili, labda kwenye ubao tofauti.

Kodi iliyo hapa chini inafanya hivyo haswa. Inaweka bidhaa kwenye akaunti ya amana, inaunda tangazo, na kufanya usimamizi wa kimsingi.

Kukubali biashara kunamaanisha kuchagua tangazo (biashara), kulipa bei, na kupokea bidhaa. Kodi iliyo hapa chini inaleta biashara. Inakagua kama inapatikana. Inalipia bidhaa. Inaleta bidhaa. Inasasisha tangazo.

Hatimaye, tuna chaguo kwa wauzaji kujiondoa kwenye biashara kabla mnunuzi hajaikubali. Katika baadhi ya miundo, matangazo yangekuwa hewani kwa muda fulani kabla ya kuisha muda wake. Ni chaguo lako, kulingana na muundo wa soko lako.

Kodi inafanana sana na ile inayotumika kutekeleza biashara, isipokuwa tu kwamba hakuna sarafu inayobadilishana mikono na bidhaa inarudi kwa mweka tangazo.

Ndiyo hivyo. Umefika mwisho wa utekelezaji. Inashangaza kidogo jinsi baadhi ya dhana za biashara zinavyokuwa fupi zinapoelezwa katika kodi, na hii ni mojawapo ya matukio hayo. Angalia mkataba kamili katika hifadhi yetu (opens in a new tab).

Hitimisho

Mbao za matangazo ni muundo wa kawaida wa soko uliokua kwa kiasi kikubwa na ujio wa intaneti, na kuwa muundo wa biashara maarufu sana wenye washindi wachache wanaohodhi soko.

Mbao za matangazo pia hutokea kuwa zana rahisi kunakili katika mazingira ya mnyororo wa vitalu, zikiwa na vipengele maalum sana ambavyo vitafanya iwezekane kutoa changamoto kwa makampuni makubwa yaliyopo.

Katika makala haya, nilijaribu kuunganisha uhalisia wa biashara wa ubao wa matangazo na utekelezaji wa kiteknolojia. Maarifa haya yanapaswa kukusaidia kuunda maono na ramani ya njia ya utekelezaji ikiwa una ujuzi sahihi.

Kama kawaida, ikiwa uko tayari kujenga chochote cha kufurahisha na ungependa kupata ushauri, tafadhali niandikie ujumbe (opens in a new tab)! Siku zote nina furaha kusaidia.