Sebastien Rousseau

The making of the Express Transaction Credits Platform

Ìpilẹ̀ tọ́kẹ̀ẹ̀nì, ìpínpín owó ìfọwọ́sí ọ̀pọ̀, àti gbígbé owó àkókò-gígún lórí Ethereum ní 2018.

10 ìṣẹ́jú kíkà
Banner for: The making of the Express Transaction Credits Platform

Giant white pillars.class="img-fluid clearfix"

Àkópọ̀ Àgbófinró / Àwọn Ohun Tí A Kọ

  • Ìṣòro ìpilẹ̀. ERC-20, ìwọ̀n token Ethereum tó bori ní 2018, ní àìpé ìpilẹ̀ṣẹ̀: àwọn token tí a gbé tààrà sí àdírẹ́sì àdéhùn ọlọ́gbọ́n ni a pa run àìdákẹ́ tí àdéhùn náà kò ní olùṣàkóso. Eyikeyi ìpèlẹ̀ ìsanwó tí a kọ́ lé ERC-20 gba ewu yẹn papọ̀ (Ethereum EIPs).
  • ERC-223 gẹ́gẹ́ bí àtúnṣe. ERC-223 béèrè pé àwọn àdéhùn olùgbà gbọdọ̀ mú ìṣẹ́ tokenFallback(address, uint, bytes) wé. Bí kò bá sí, gbígbé náà yí padà àdúnfọ̀. Kò sí token kankan tí a lè pàdánù àìdákẹ́ (Ethereum EIPs GitHub).
  • Àwọn ipilẹ̀ àdéhùn márùn-ún ti EXTC. Ìdánimọ̀ token (orúkọ, àmì, ìdọ̀tí iye 18), ipò tí a dúró ṣinṣin, gbígbé tí ó bá ERC-223 mu, ìsanwó àjọ pẹ̀lú ibuwọlu lọ́pọ̀lọpọ̀, àti àwọn ìpẹṣẹ tí a tiipa bí gíga títẹ̀.
  • Ẹ̀rọ ìyáwó-ìfọkànsín. Àwọn ayanwó tiipa àwọn token EXTC nínú escrow àdéhùn; àdéhùn náà gbé àwọn èrè ìyáwó àdúnfọ̀ lẹ́hin gbígba ohun ìṣèdájú, láìsí ìdádúró ìdánilójú tàbí ìfọwọ́sí ìgbìmọ̀ kirẹditi.
  • Ohun tí ìdánwò fi hàn nípa àwọn ìdíwọ̀ Ethereum. Ní ìmújáde mainnet ~15 TPS àti iye gas $0.10–$1.00 fún iṣowo kan ní gíga Jánnúárì 2018, nẹ́tíwọ́kì ìsanwó tí ń ṣe àkóónú iye ìfipamọ́-owo kò ṣeéṣe nípa ọrọ̀ àjé àti imọ̀ ẹ̀rọ lé Ethereum gbangba láìsí àwọn àwọ̀kọ̀ Layer-2.

Ìṣòro Ìpilẹ̀ṣẹ̀: Ìdí Tí ERC-20 Kò Tó #

Ìwọ̀n ERC-20, tí a dábàá ní 2015 àti tí a ṣe àṣẹ nínú Ethereum Improvement Proposal 20, ṣàpejuwe ìdí ìṣiṣẹ́ token tí a lè pàárọ̀ tí ó ṣe agbára rírọ̀ ICO 2017–2018. Àwọn iṣẹ́ pàtàkì mẹ́fà rẹ̀ — totalSupply, balanceOf, transfer, transferFrom, approve, àti allowance — tó fún ìfún token tí ó rọrùn àti pàáàrọ̀.

Síbẹ̀síbẹ̀, fún ìpèlẹ̀ ìsanwó, ERC-20 ní àìpé pàtàkì ní ìmúdájú. Ìṣẹ́ transfer(address _to, uint256 _value) gbé àwọn token sí àdírẹ́sì èyíkéyíí, pẹ̀lú àwọn àdírẹ́sì àdéhùn, láìdá koodu kankan nínú àdéhùn tí ó gba. Àdéhùn tí a kò ṣe ètò rẹ̀ ní pàtàkì láti tọpasẹ àwọn gbígbé ERC-20 tí ó wọlé kò ní ọ̀nà láti ṣàwárí wọn. Àwọn token tí a rán bẹ́ẹ̀ di dídánimọ̀ títí láé, láìsí ọ̀nà ìgba àpadà.

Àwùjọ Ethereum ṣiṣeye pé ọ̀pọ̀lọpọ̀ miliọnu dọ́là ti àwọn token ERC-20 ni a pàdánù títí láé ní àárọ̀ 2018 nípasẹ̀ ẹ̀rọ yìí. Ikọ́ ìpèlẹ̀ ìsanwó nibiti àwọn gbígbé lè kùnà àìdákẹ́ àti pa àwọn owó olùmúlò kò jẹ́ ìgbà tí a gbà.

Ojútùú ERC-223: Gbígbé Àdúnfọ̀ pẹ̀lú Ìkíló #

ERC-223, tí a dábàá lé Ethereum EIPs GitHub issue tracker, dojúkọ ìṣòro ìpadánù àìdákẹ́ nípasẹ̀ yíyipada ohun tí a béèrè pé gbígbé token gbọdọ̀ ṣe. Lábẹ́ ERC-223, transfer(address _to, uint256 _value, bytes _data) ṣàyẹ̀wò bóyá àdírẹ́sì olùgbà ní koodu àdéhùn. Bí ó bá ní, gbígbé náà pè _to.tokenFallback(address _from, uint256 _value, bytes _data).

Àbùdá pàtàkì: tí àdéhùn olùgbà kò bá mú tokenFallback wé, gbogbo iṣowo gbígbé yí padà. Kò sí token kankan tí ó fi ìdọ̀gbà olùrán sílẹ̀. Kò sí token kankan tí ó di dídánimọ̀. Gbígbé jẹ́ àdúnfọ̀ — ó parí pẹ̀lú koodu olùgbà tí ó ń ṣiṣẹ́, tàbí ó kùnà pátápátá pẹ̀lú ipò tí kò yípada.

Fún EXTC, èyí túmọ̀ sí:

Ẹ̀dá Àdéhùn EXTC #

Àdéhùn token EXTC jẹ́ ìmúṣẹ Solidity tí a ṣe ètò rẹ̀ ní àyíká àwọn ẹgbẹ́ márùn-ún:

1. Ìdánimọ̀ Token #

string public name = "Express Transaction Credits";
string public symbol = "EXTC";
uint8 public decimals = 18;

Iye ìdọ̀tí ẹgbẹ̀rún mẹ́ẹ̀ẹ́dógún fún EXTC ìdọ̀tí ìpèlẹ̀-ín, tí ó báramu pẹ̀lú ìdọ̀tí tí a béèrè fún àwọn lílò ìfowópamọ́ kékeré àti ìyáwó kékeré. Àmì EXTC jẹ́ olùdámọ̀ lórí-ẹwọn tí a forúkọsílẹ̀ nínú àdéhùn token.

2. Ipò Gbogbo Tí A Dúró Ṣinṣin #

A ṣeto ipò gbogbo rẹ̀ ní ìgbà tí a gbé àdéhùn jọ àti a kò lè ṣàfikún rẹ̀ nípasẹ̀ àwọn tí a tẹ̀ tẹ̀lẹ̀. Yíyàn ìpilẹ̀ṣẹ̀ yìí mú kí EXTC jẹ́ àhesẹ̀-iye: token èyíkéyíí tí a yọ kúrò nínú ìtàkùrọsọ títí láé — nípasẹ̀ àwọn iṣẹ́ ìjó tí a kò lè yí padà — dín ipò kù láìsí rípò. Àwòràwọ̀ ipò tí a dúró ṣinṣin jẹ́ ìwọ̀n nínú àwọn ìpilẹ̀ṣẹ̀ token ìsanwó 2018, tí ó ṣàfihàn àbájáde tí Bitcoin nípa rẹ̀ pé ìtẹ̀síwájú àhesẹ̀-iye jẹ́ ẹ̀yà fún ọ̀nà pàáàrọ̀.

3. Ìdọ̀gbà Àti Gbígbé Tí Ó Bá ERC-223 Mu #

Ìṣẹ́ gbígbé àárọ̀ mú ìdí ìṣiṣẹ́ ERC-223 pátápátá wé. Àwọn maapu ìdọ̀gbà tí ó wà ínú tọpasẹ àwọn ohun tí ó wà nínú àdírẹ́sì kọ̀ọ̀kan. Olùrànlọ́wọ́ isContract(address) ya àwọn àdírẹ́sì EOA (àkọọlẹ tí ẹ̀gbẹ́ ìta ní) sí tì pẹ̀lú àwọn àdírẹ́sì àdéhùn láti mọ̀ bóyá a gbọdọ̀ pè tokenFallback.

4. Àwọn Ìsanwó Àjọ Pẹ̀lú Ibuwọlu Lọ́pọ̀lọpọ̀ #

Àwọn ìlànà ìsanwó àjọ béèrè ìfọwọ́sí pọ̀: kò sí ẹni tí ó fọwọ́sí ẹyọkan tí ó lè bẹ̀rẹ̀ ìsanwó tí ó ju ìdíwọ̀ tí a ṣàpẹẹrẹ lọ. Àdéhùn EXTC mú ètò ibuwọlu meji-ẹ̀wọ̀n-N wé:

  1. Alákọọlẹ tí a yàn dábàá gbígbé kan, tí ó ṣàpejuwe olùgbà, iye, àti nonce.
  2. Ẹni tí ó fọwọ́sí papọ̀ jẹ́rìísí nonce.
  3. Lẹ́hin tí a gba gbígbé ibuwọlu méjì lórí-ẹwọn ni gbígbé ṣiṣẹ́.

Èyí yọ ewu ikọlù ní ipò kan fún àwọn àkọọlẹ àjọ bí ó ṣe ń pa gbogbo ìlànà ìfọwọ́sí mọ́ lórí-ẹwọn àti tí a lè ṣàyẹ̀wò láìsí aṣojú ìlú àkóónú.

5. Àwọn Ìpẹṣẹ Tí A Tiipa Akókò Bí Gíga Títẹ̀ #

Àwọn ìsanwó tí ó tún wáyé — àwọn oṣó, ìforúkọsílẹ̀, àwọn ìpadà ìyáwó tí a ṣe ètò — béèrè ipilẹ̀ ìpẹṣẹ tí a dúró ṣinṣin. EXTC mú èyí wé gẹ́gẹ́ bí tiipa-àkókò: a tọ́jú àkọsílẹ̀ gbígbé nínú àdéhùn pẹ̀lú àmúye releaseBlock. Gbígbé kò lè ṣiṣẹ́ títí tí gíga títẹ̀ Ethereum bá dé releaseBlock.

Gíga títẹ̀ gẹ́gẹ́ bí aṣojú àkókò jẹ́ yíyàn tí ó wúlò ní 2018. Ethereum ṣe àfojúsùn ìwọ̀n block ìṣẹ́jú 15, tí ó mú kí gíga títẹ̀ jẹ́ aṣojú tí a lè gbára lé fún àkókò agogo-ogiri ní ìwọ̀n ìṣẹ́jú díẹ̀. Àwọn àmúye àkókò pato (block.timestamp) wà síbẹ̀ síbẹ̀ wọ́n ṣeéṣe wéwèé látọ̀wọ̀ àwọn agbẹ̀ nínu fèrèsé ±900-ìṣẹ́jú, tí ó mú kí gíga títẹ̀ jẹ́ ìtọ́kasi tó ní aabo fún àwọn àdéhùn iṣọ̀wọ́.

Ẹ̀rọ Ìyáwó Àyárayára Tí A Ṣe Lé Ohun Ìṣèdájú #

Ipilẹ̀ ìyáwó EXTC jẹ́ ẹ̀ya tí ó ní ìpéye jùlọ̀. Ìpilẹ̀ṣẹ̀:

  1. Ayanwó tiipa ohun ìṣèdájú. Ayanwó pè lockCollateral(uint256 _collateralAmount), tí ó gbé àwọn token EXTC sí escrow àdéhùn ìyáwó nípasẹ̀ ERC-223 tokenFallback.
  2. Ṣàyẹ̀wò àwọn iwọ̀n ìyáwó-sí-iye. Àdéhùn kàwé LTV ratio tí a ṣe ìṣòro tẹ́lẹ̀ (fún àpẹẹrẹ 50%) àti sọ iye ìyáwó tí ó pọ̀jù lé ohun ìṣèdájú tí a tiipa.
  3. Àgbékalẹ̀ ìyáwó àdúnfọ̀. Bí ohun ìṣèdájú bá pàdé ìdíwọ̀ ìpele ìpilẹ̀, àdéhùn náà gbe iye ìyáwó sí àdírẹ́sì ayanwó lẹ́sẹ̀kẹsẹ̀. Kò sí ìtòpẹlẹ ìdánilójú, kò sí ìgbìmọ̀ kirẹditi, kò sí ìdádúró ìpari.
  4. Ìpadàbọ̀ àti ìmọ̀ sílẹ̀. Nígbà tí a padà bọ̀ — ọ̀rọ̀ ìpilẹ̀ àti iye orí tí a dúró ṣinṣin — àdéhùn náà tún ṣe ohun ìṣèdájú padà fún ayanwó. Àìpadàbọ̀ kí releaseBlock ṣe mú ìmọ̀ sílẹ̀ ìtọpa: àdéhùn gbé ohun ìṣèdájú sí àdírẹ́sì tí olùyáwó yàn.

A ṣe gbogbo ìlànà náà nípasẹ̀ koodu àdéhùn. Kò sí ẹgbẹ́ kankan tí ó nílò láti gbẹ́kẹ̀lé ẹlòmíràn tàbí láti gbára lé aṣojú láti ṣe àgbékalẹ̀ àwọn àlùmọ́ní.

Ohun Tí Ìdánwò Fi Hàn #

Ẹ̀dá àdéhùn EXTC jẹ́ àdánidúró ní ìmọ̀ ẹ̀rọ. ERC-223 yanjú àìpé ìrírọ̀ tó le jùlọ̀ ti ERC-20. Àwọn ipilẹ̀ ibuwọlu lọ́pọ̀lọpọ̀ àti tiipa-àkókò ṣàpẹẹrẹ ní tààrà sí àwọn ìlànà ìsanwó àjọ tòótọ́. Ẹ̀rọ ìyáwó ohun ìṣèdájú fi hàn pé ìyáwó tí a ṣe àbójútó lè ṣe atọmátíkì gba àti ṣiṣẹ́ nípa ara rẹ̀ lórí-ẹwọn.

Àwọn ìdíwọ̀ méjì fi ara wọn hàn ní àmúṣiṣẹ́:

Àwọn iye gas. Ní gíga Jánnúárì 2018, àwọn iye gas Ethereum dé 50–100 gwei, tí ó mú kí gbígbé token ERC-223 ẹyọkan jẹ́ $0.50–$2.00. Fún ìfowópamọ́ kékeré tàbí ìfipamọ́-owo ti $10–$50, àwọn ọ̀yà wọ̀nyẹn jẹ́ tí ó pọ̀jù.

Iye ìmúdájú. Ìdíwọ̀ gas block Ethereum mainnet ní ìbẹ̀rẹ̀ 2018 jẹ́ nǹkan bí 8 miliọnu gas. Gbígbé ERC-223 jẹ́ nǹkan bí 50,000–80,000 gas. Nẹ́tíwọ́kì náà lè ṣe àkóónú nǹkan bí 100–160 gbígbé token EXTC fún block kan, tàbí nǹkan bí 7–11 fún ìṣẹ́jú kan ní ìwọ̀n block ìṣẹ́jú 15. Ìwọ̀n nẹ́tíwọ́kì ìsanwó — ọ̀ọ́dúnrún tàbí ẹgbẹẹgbẹ̀rún àwọn iṣowo fún ìṣẹ́jú kan — kò ṣeéṣe lé Ethereum gbangba láìsí àwọn àwọ̀kọ̀ Layer-2 tí kò tíì wà ní ìpele ìmúdájú.

Àwọn wọ̀nyí jẹ́ àwọn ìdíwọ̀ àwọ̀kọ̀, kì í ṣe àwọn àìpé ìpilẹ̀ṣẹ̀ nínú EXTC. Ìrọ̀lẹ̀ àdéhùn jẹ́ tó. Blockchain tó wà ní abẹ kò lè ṣe àtìlẹyìn iye ìsanwó ní ìwọ̀n ile-iṣẹ́ iṣọ̀wọ́ tó.

Àwọn Èrò Tí Ó Dé Ìmúdájú #

A fọwọ́ sí àwọn àwòràwọ̀ ìpilẹ̀ṣẹ̀ díẹ̀ láti EXTC nípasẹ̀ ìdàgbàsókè tó tẹ̀lé:

Gbígbé token àdúnfọ̀ pẹ̀lú ìkíló olùgbà — àbùdá ERC-223 pàtàkì — di ipilẹ̀ fún ERC-777 (2019), tí ó gbòòrò ẹ̀dá ìkíló àti tí a ṣàgbékalẹ̀ rẹ̀ nígbẹ̀yìngbẹ́yín nínú àwọn ìlànà ìyáwó DeFi. Àwòràwọ̀ tokenFallback fara hàn níbi gbogbo nínú ẹ̀dá DeFi ìgbàlódé.

Ìfọwọ́sí pẹ̀lú ibuwọlu lọ́pọ̀lọpọ̀ fún àwọn ìsanwó àjọ — àwòràwọ̀ tí ó béèrè fún àwọn ibuwọlu lọ́pọ̀lọpọ̀ lórí-ẹwọn kí a tó ṣiṣẹ́ — di àwòràwọ̀ ìwọ̀n fún ìṣàkóso ìpamọ́ DAO àti àwọn ojútùú ìtọ́jú ìpílẹ̀. Gnosis Safe, tí a ṣe ìmọ̀ sílẹ̀ rẹ̀ ní 2018, jẹ́ olókìkí àwòràwọ̀ yìí ní ìwọ̀n ńlá.

Àwọn ìyáwó àyárayára tí a ṣe lé ohun ìṣèdájú láìsí aṣojú — ẹ̀rọ tíipa ohun ìṣèdájú nínú escrow àti ìtúsílẹ̀ àwọn èrè ìyáwó àdúnfọ̀ — jẹ́ ìpilẹ̀ṣẹ̀ ìpilẹ̀ ti àwọn ìlànà ìyáwó DeFi bíi Compound (2018) àti Aave (2020).

Àwọn tiipa àkókò bí gíga títẹ̀ fún àwọn ìsanwó tí a ṣe ètò — àwòràwọ̀ tí ó ṣàgbékalẹ̀ ìgbà ìṣiṣẹ́ ọjọ́ iwájú nínú àdéhùn — fara hàn nínú àwọn àdéhùn vesting token, àwọn dábàá ìjọba tí a dádúró, àti àwọn ìpilẹ̀ṣẹ̀ oracle iye àgbékalẹ̀-àkókò (TWAP) ní gbogbo àgbègbè DeFi.

Ìdánwò EXTC kò dé ìwọ̀n ìmúdájú. Àwọn àwọ̀kọ̀ tí a béèrè láti mú ìpilẹ̀ṣẹ̀ jẹ́ àṣeyọrí gba ọdún mẹ́ta sí márùn-ún síi láti dàgbà. Àwọn ìbéèrè ìpilẹ̀ṣẹ̀ tí ó béèrè jẹ́ tí ó tọ fún 2018.

Àwọn Ìbéèrè Tí A Máa Ń Béèrè #

Ìdí tí a fi máa kò gba ERC-223 gẹ́gẹ́ bí ìwọ̀n token tó bori bí ó tilẹ̀ ṣe ṣàtúnṣe àìpé ERC-20?

ERC-223 béèrè pé àwọn àdéhùn olùgbà gbọdọ̀ mú tokenFallback wé, tí ó fọ ìbáramu ẹ̀yìn pẹ̀lú ẹgbẹẹgbẹ̀rún àwọn àdéhùn tí a ṣe gba tẹ́lẹ̀ fún àwọn token ERC-20. Àgbègbè ERC-20 tó wà jẹ́ ńlá jùlọ̀ fún ìkópa. Àwọn dábàá tó tẹ̀ léyìn — ní pàtàkì ERC-777 àti ERC-1363 — dojúkọ ìṣòro kanna pẹ̀lú àwọn àdéhùn ìbáramu tó yàtọ̀, síbẹ̀ síbẹ̀ ERC-20 dúró gẹ́gẹ́ bí ọba nípasẹ̀ àpapọ̀ àwọn ipa nẹ́tíwọ́kì àti ìmọ̀ sílẹ̀ àwọn àwòràwọ̀ token tí a fi aṣọ bora tí ó yẹra fún ìṣẹ̀lẹ̀ ìpadánù àìdákẹ́.

Ohun tí ó ṣẹlẹ̀ sí token àti ìpèlẹ̀ EXTC?

EXTC jẹ́ ìmọ̀ ìmúṣẹ ẹ̀rí àti iṣẹ́ ìwádìí àárọ̀ láti 2018. Ọjà ICO àti token ìsanwó tó gbòòrò ṣe ìdínkù ní iyára ní 2018–2019 bí àwọn ìdíwọ̀ ìsẹ̀lẹ̀ Ethereum àti àìdánilójú ìlànà ṣe di gbangba. Àwọn èrò tí a fi sínú ìpilẹ̀ṣẹ̀ EXTC tún farahàn nínú àwọn ìlànà tó tẹ̀ léyìn tí wọ́n ní àǹfààní láti lo àwọn àwọ̀kọ̀ Layer-2, àwọn ohun èlò tó dára sí i, àti àwọn ètò ìlànà tó jẹ́ àfihàn jùlọ̀.

Bí àwòràwọ̀ ìyáwó ohun ìṣèdájú EXTC ṣe fi ara wé pẹ̀lú àwọn ìlànà DeFi ìgbàlódé bíi Aave?

Ẹ̀rọ pàtàkì jẹ́ kanna: tiipa ohun ìṣèdájú, gba ìyáwó tí a ṣe ìwọ̀n lé LTV ratio, padà bọ̀ tàbí dojúkọ ìmọ̀ sílẹ̀ owó. Àwọn ìyàtọ̀ jẹ́: (1) àwọn ìlànà DeFi ìgbàlódé lo àwọn fún iye oracle fún LTV àgbára dípò àwọn àwọn iwọ̀n tí a dúró ṣinṣin; (2) wọ́n lo àwọn oṣuwọn orí àlùmọ́ní tí ó dáhùn sí lílo adagun; (3) wọ́n ṣiṣẹ́ lé àwọn nẹ́tíwọ́kì Layer-2 pẹ̀lú àwọn iye gas tí ó kéré ní igba 10–100 sí ìwọ̀n mainnet 2018; (4) Aave àti Compound ti ṣe àwọn àyẹ̀wò ìrírọ̀ ọ́fíẹ̀ àti tí wọ́n ni ọ̀pọ̀ biliọnu dọ́là nínú omi omi, tí ó pèsè ìjẹ́rìísí ìdánwò pé àwòràwọ̀ ìpilẹ̀ jẹ́ tó.

Àwọn ìdíwọ̀ ẹ̀dà Solidity ní ìbẹ̀rẹ̀ 2018 jẹ́ kíni?

A kọ àdéhùn EXTC fún Solidity 0.4.x, ẹ̀dà tó bori ní ìbẹ̀rẹ̀ 2018. Solidity 0.4 kùnà ọ̀pọ̀lọpọ̀ àwọn ẹ̀yà ìrírọ̀ tí a fi wé nínú àwọn ẹ̀dà tó tẹ̀ léyìn: ìṣàyẹ̀wò ìkúnjọ̀ integer (a ṣàfikún rẹ̀ ní ìtọ̀kọ̀kan ní 0.8.0), require/revert pẹ̀lú àwọn ìfiranṣẹ́ àṣìṣe (ní ìdíwọ̀ ní 0.4), àti ìfihàn pato ti ìṣẹ́ (aṣa jẹ́ gbangba ní 0.4). Àdéhùn gbára lé ìkójọ SafeMath ti OpenZeppelin láti dáàbò bò kúrò nínú ìkúnjọ̀, àwòràwọ̀ tí ó wọ́pọ̀ kí kompáìlà tó ṣe àgbékalẹ̀ yìí ní ìbísí.

Àwọn Ìtọ́kasí #

Àyẹ̀wò àkọ́kọ́ .

Àyẹ̀wò àkọ́kọ́ .