Teangacha conartha cliste
Is gné iontach de Ethereum é gur féidir conarthaí cliste a ríomhchlárú le teangacha atá sách éasca do na forbróirí. Má tá taithí agat ar Python nó ar aon teanga "curly bracket", is féidir leat teacht ar theanga le comhréir aithnidiúil.
Is iad seo an dá theanga is gníomhaí agus is mó cothabhála:
- Solidity
- Vyper
Soláthraíonn Remix IDE timpeallacht chuimsitheach forbartha chun conarthaí a chruthú agus a thástáil i Solidity agus Vyper araon. Bain triail as an IDE Remix sa bhrabhsálaí chun an códú a thosú.
Seans gur mhaith le forbróirí a bhfuil níos mó taithí acu Yul a úsáid freisin, teanga idirmheánach don Ethereum Virtual Machine, nó Yul+, síneadh ar Yul.
Má tá tú fiosrach agus fonn ort cabhrú le tástáil a dhéanamh ar theangacha nua atá fós á bhforbairt go mór, is féidir leat triail a bhaint as Fe, teanga chonarthach cliste atá ag teacht chun cinn agus atá fós ina thús.
Réamhriachtanais
Is féidir le heolas atá agat cheana ar theangacha ríomhchlárúcháin, go háirithe ar JavaScript nó Python, cabhrú leat tuiscint a fháil ar dhifríochtaí i dteangacha conartha cliste. Molaimid duit freisin tuiscint a fháil ar choincheap na gconarthaí cliste roimh thochailt go ró-dhomhain isteach sna comparáidí teanga. Réamhrá ar chonarthaí cliste.
Solidity
- Teanga ardleibhéil atá dírithe ar oibiachtaí chun conarthaí cliste a chur i bhfeidhm.
- Teanga "curly-bracket" atá go mór faoi thionchar C++.
- Scríofa go statach (tá an cineál athróige ar eolas ag am tiomsaithe).
- Tacaíochtaí:
- Oidhreacht (is féidir leat síneadh a chur le conarthaí eile).
- Leabharlanna (is féidir leat cód ath-inúsáidte a chruthú ar féidir leat glaoch air ó chonarthaí éagsúla - cosúil le feidhmeanna statacha i rang statach i dteangacha ríomhchláraithe eile atá dírithe ar oibiachtaí).
- Cineálacha casta atá sainithe ag an úsáideoir.
Naisc thábhachtacha
- Doiciméadúchán
- Tairseach Teanga Solidity
- Solidity trí Shampla
- GitHub
- Idir Solidity Gitter Seomra comhrá go Solidity Matrix Seomra comhrá
- Bileog leideanna
- Blag Solidity
- Solidity ar Twitter
Conradh samplach
1// SPDX-License-Identifier: GPL-3.02pragma solidity >= 0.7.0;34contract Coin {5 // The keyword "public" makes variables6 // accessible from other contracts7 address public minter;8 mapping (address => uint) public balances;910 // Events allow clients to react to specific11 // contract changes you declare12 event Sent(address from, address to, uint amount);1314 // Constructor code is only run when the contract15 // is created16 constructor() {17 minter = msg.sender;18 }1920 // Sends an amount of newly created coins to an address21 // Can only be called by the contract creator22 function mint(address receiver, uint amount) public {23 require(msg.sender == minter);24 require(amount < 1e60);25 balances[receiver] += amount;26 }2728 // Sends an amount of existing coins29 // from any caller to an address30 function send(address receiver, uint amount) public {31 require(amount <= balances[msg.sender], "Insufficient balance.");32 balances[msg.sender] -= amount;33 balances[receiver] += amount;34 emit Sent(msg.sender, receiver, amount);35 }36}Taispeáin gach rudCóip
Ba chóir go dtabharfadh an sampla seo tuiscint duit ar chomhréir an chonartha Solidity. Tá tuairisc níos mionsonraithe a fháil ar na feidhmeanna agus na hathróga, sna doiciméid.
Vyper
- Teanga ríomhchlárúcháin Pythonic
- Clóscríobh láidir
- Cód tiomsaitheora beag agus intuigthe
- Giniúint éifeachtach beartchóid
- Tá níos lú gnéithe aige d’aon ghnó ná Solidity agus é d'aidhm aige conarthaí a dhéanamh níos sláine agus níos éasca le hiniúchadh. Ní thacaíonn Vyper le:
- Mionathraitheoirí
- Oidhreacht
- Tionól inlíne
- Ró-ualú feidhme
- Ró-ualú oibritheora
- Glaonna athfhillteacha
- Lúba fad gan teorainn
- Pointí seasta dénártha
Le haghaidh tuilleadh faisnéise, léigh réasúnaíocht Vyper.
Naisc thábhachtacha
- Doiciméadúchán
- Vyper le Sampla
- Níos mó Vyper de réir Sampla
- GitHub
- Vyper comhrá pobail Discord
- Bileog leideanna
- Creataí agus uirlisí forbartha conartha cliste do Vyper
- VyperPunk - foghlaim conas conarthaí cliste Vyper a dhaingniú agus a haiceáil
- VyperExamples - samplaí leochaileachta Vyper
- Mol forbartha Vyper
- Samplaí de chonarthaí cliste vyper
- Acmhainní coimeádta iontacha Vyper
Sampla
1# Open Auction23# Auction params4# Beneficiary receives money from the highest bidder5beneficiary: public(address)6auctionStart: public(uint256)7auctionEnd: public(uint256)89# Current state of auction10highestBidder: public(address)11highestBid: public(uint256)1213# Set to true at the end, disallows any change14ended: public(bool)1516# Keep track of refunded bids so we can follow the withdraw pattern17pendingReturns: public(HashMap[address, uint256])1819# Create a simple auction with `_bidding_time`20# seconds bidding time on behalf of the21# beneficiary address `_beneficiary`.22@external23def __init__(_beneficiary: address, _bidding_time: uint256):24 self.beneficiary = _beneficiary25 self.auctionStart = block.timestamp26 self.auctionEnd = self.auctionStart + _bidding_time2728# Bid on the auction with the value sent29# together with this transaction.30# The value will only be refunded if the31# auction is not won.32@external33@payable34def bid():35 # Check if bidding period is over.36 assert block.timestamp < self.auctionEnd37 # Check if bid is high enough38 assert msg.value > self.highestBid39 # Track the refund for the previous high bidder40 self.pendingReturns[self.highestBidder] += self.highestBid41 # Track new high bid42 self.highestBidder = msg.sender43 self.highestBid = msg.value4445# Withdraw a previously refunded bid. The withdraw pattern is46# used here to avoid a security issue. If refunds were directly47# sent as part of bid(), a malicious bidding contract could block48# those refunds and thus block new higher bids from coming in.49@external50def withdraw():51 pending_amount: uint256 = self.pendingReturns[msg.sender]52 self.pendingReturns[msg.sender] = 053 send(msg.sender, pending_amount)5455# End the auction and send the highest bid56# to the beneficiary.57@external58def endAuction():59 # It is a good guideline to structure functions that interact60 # with other contracts (i.e. they call functions or send ether)61 # into three phases:62 # 1. checking conditions63 # 2. performing actions (potentially changing conditions)64 # 3. interacting with other contracts65 # If these phases are mixed up, the other contract could call66 # back into the current contract and modify the state or cause67 # effects (ether payout) to be performed multiple times.68 # If functions called internally include interaction with external69 # contracts, they also have to be considered interaction with70 # external contracts.7172 # 1. Conditions73 # Check if auction endtime has been reached74 assert block.timestamp >= self.auctionEnd75 # Check if this function has already been called76 assert not self.ended7778 # 2. Effects79 self.ended = True8081 # 3. Interaction82 send(self.beneficiary, self.highestBid)Taispeáin gach rudCóip
Ba cheart go dtabharfadh an sampla seo tuiscint duit ar chomhréir chonartha Vyper. Le cur síos níos mionsonraithe a fháil ar na feidhmeanna agus na hathróga, féach na doiciméid.
Yul agus Yul+
Mura bhfuil taithí agat ar Ethereum agus mura bhfuil aon chódú déanta agat le teangacha conartha cliste go fóill, molaimid duit tosú le Solidity nó Vyper. Ná breathnaigh ar Yul nó Yul+ go dtí go mbíonn tú eolach ar na cleachtais is fearr maidir le slándáil conarthaí cliste agus na sonraí a bhaineann le bheith ag obair leis an EVM.
Yul
- Teanga idirmheánach le haghaidh Ethereum.
- Tacaíonn sé le EVM agus Ewasm, WebAssembly ar a bhfuil blas Ethereum, agus tá sé deartha le bheith ina comhainmneoir inúsáidte ar an dá ardán.
- Sprioc mhaith le haghaidh céimeanna optamaithe ardleibhéil ar féidir leo leas a dhéanamh do ardáin EVM agus Ewasm araon.
Yul+
- Síneadh íseal-leibhéil, ard-éifeachtach ar Yul.
- Dearadh é ar dtús do chonradh rolladh dóchasach.
- Is féidir breathnú ar Yul+ mar thogra uasghrádaithe turgnamhach do Yul, ag cur gnéithe nua leis.
Naisc thábhachtacha
Conradh samplach
Cuireann an sampla simplí seo a leanas feidhm chumhachta i ngníomh. Is féidir é a thiomsú le solc --strict-assembly --bin input.yul
. Ba chóir an sampla a stóráil sa chomhad input.yul.
1{2 function power(base, exponent) -> result3 {4 switch exponent5 case 0 { result := 1 }6 case 1 { result := base }7 default8 {9 result := power(mul(base, base), div(exponent, 2))10 if mod(exponent, 2) { result := mul(base, result) }11 }12 }13 let res := power(calldataload(0), calldataload(32))14 mstore(0, res)15 return(0, 32)16}Taispeáin gach rud
Má tá taithí mhaith agat cheana féin ar chonarthaí cliste, is féidir feidhmiú iomlán ERC20 in Yul a fháil anseo .
Fe
- Teanga chlóscríofa go statach do Mheaisín Fíorúil Ethereum (EVM).
- Spreagtha ag Python agus Rust.
- Tá sé mar aidhm leis a bheith éasca le foghlaim - fiú d'fhorbróirí nach bhfuil taithí acu ar éiceachóras Ethereum.
- Tá Fe i dtús forbartha fós, eisíodh alfa don teanga i mí Eanáir 2021.
Naisc thábhachtacha
Conradh samplach
Seo a leanas conradh simplí a cuireadh i bhfeidhm in Fe.
1type BookMsg = bytes[100]23contract GuestBook:4 pub guest_book: map<address, BookMsg>56 event Signed:7 book_msg: BookMsg89 pub def sign(book_msg: BookMsg):10 self.guest_book[msg.sender] = book_msg1112 emit Signed(book_msg=book_msg)1314 pub def get_msg(addr: address) -> BookMsg:15 return self.guest_book[addr].to_mem()16Taispeáin gach rud
Conas rogha a dhéanamh
Ar nós aon teanga ríomhchlárúcháin eile, baineann sé den chuid is mó leis an uirlis cheart a roghnú don phost ceart chomh maith le roghanna pearsanta.
Seo roinnt rudaí le cur san áireamh mura bhfuil triail bainte agat as aon cheann de na teangacha go fóill:
Cad atá iontach faoi Solidity?
- Más tosaitheoir thú, tá go leor ranganna teagaisc agus uirlisí foghlama ar fáil. Féach tuilleadh faoi sin sa rannán Foghlaim trí Chódú.
- Tá uirlisí maithe forbróra ar fáil.
- Tá pobal mór forbróirí ag Solidity, rud a chiallaíonn go bhfaighidh tú freagraí ar do cheisteanna tapa go leor.
Cad atá iontach faoi Vyper?
- Bealach iontach le haghaidh forbróirí Python atá ag iarraidh conarthaí cliste a scríobh.
- Tá líon níos lú gnéithe ag Vyper, rud a fhágann go bhfuil sé iontach chun smaointe a fhréamhshamhlú go tapa.
- Tá sé mar aidhm ag Vyper a bheith éasca le hiniúchadh agus an-inléite don duine.
Cad atá iontach faoi Yul agus Yul+?
- Teanga ísealleibhéil atá simplí agus feidhmiúil.
- Ligeann sé duit dul i bhfad níos gaire do EVM amh, a chuideoidh le húsáid gáis do chonarthaí a bharrfheabhsú.
Comparáidí teanga
Chun comparáid a dhéanamh idir an chomhréir bhunúsach, saolré an chonartha, comhéadain, oibreoirí, struchtúir sonraí, feidhmeanna, sreabhadh rialaithe, agus tuilleadh seiceáil an bileog leideanna Auditless