Co wiedzieć, zanim zaczniesz web3
w 6 księgach zapisane
10 miesięcy
Od rozpoczęcia pracy z blockchain
web2 vs web3
o różnicach, o tradeoffach
Blockchain dla nerdów
Co to w ogóle znaczy "płacić przez internet"?
Ktoś przelał 329 mln dolców w #Bitcoin i zapłacił opłatę w wysokości 0,12 dolara.
— K.O Kryptowaluty (@KO_Kryptowaluty) May 30, 2022
To jest opłata za transakcję w wysokości 0,0000000003644%.
Bez blokad, bez pośredników, bez banków. #kryptowaluty #kryptoekipa #finanse pic.twitter.com/b76E2gBOjN
Dapps
Remember that you should always test your dapp with at least one non-metamask wallet (eg. Brave, Status browser). Make sure your dapp conforms to ethereum standards, and not just to accidental properties of one particular wallet!
— vitalik.eth (@VitalikButerin) May 31, 2022
Wszystko jest to samo
😎
tylko łączysz się z węzłem sieci Ethereum
zamiast serwerem HTTP.
BREAKING: Web2 and Web3 are the same damn thing.
— JackForge.eth (@TheJackForge) May 12, 2022
Nie wyklucza to, że pewne dane
mogą być pobierane
z centralizowanych serwerów
🗯
Re: non-financial blockchain use cases. pic.twitter.com/lYZFprXAry
— vitalik.eth (@VitalikButerin) May 27, 2022
Czy ABI to takie inne API?
❌ Nie pobieram ABI z zewnętrznych źródeł
✅ Zawsze hardkoduję adresy smartkontraktów
dlaczego ❓
Last week we had a great workshop on how @MoralisWeb3 saves developers
— lecryptofellowship (@lecryptofellow) May 27, 2022
time and money to ship scalable & robust Dapps - with @Shiv_24561 & @YSoenggoro pic.twitter.com/D5p4Eei5pN
You have to pay for gas,
even if transaction failed
👮♂️ DDos protection
Testy
MetaMask requests
doesn't affect network tab
in browser dev tools
Wyzwania
export type LiquidationDepositAmount = string & {
type: 'LIQUIDATION_DEPOSIT_AMOUNT';
};
export type OpeningFeeRate = string & {
type: 'OPENING_FEE_RATE';
};
export type OpeningFeeAmount = BigNumber & {
type: 'OPENING_FEE_AMOUNT';
};
service ➡️ BN ➡️ string ➡️ reducer ➡️ store ➡️ selector (BN for calcs) ➡️ component ➡️ (BN)
const getErrorCode = (error: unknown): UserErrorCode => {
if (!(error instanceof Error)) {
/**
* If contract method is called via Metamask wallet
* then error is non-Error type
* and has different structure than thrown via public RCP provider
*/
if (isErrorFromWallet(error)) {
const code = getErrorFromWalletCode(error);
if (code) {
return code;
}
}
/**
* Non contract related errors
* Metamask's errors are non-Error type
*/
if (isMetamaskError(error)) {
const code = getMetamaskErrorCode(error);
if (code) {
return code;
}
}
return 'UNEXPECTED_ERROR';
}
/**
* If contract method is called via Public RCP provider
* then error is Error type
* and has different structure than thrown via Metamask wallet
*/
if (isErrorFromPublicRcp(error)) {
const code = getErrorFromPublicRcpCode(error);
if (code) {
return code;
}
}
if (error instanceof TypeError) {
return 'UNEXPECTED_ERROR';
}
return 'UNEXPECTED_ERROR';
};
It's a good practice to log errors anyway,
regardless it's either web3 or web2
Tokeny ERC-20
ERC20 standard
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol
unlimited allowance
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol
Przegląd projektów
Learn Web3 -> get paid.
— Vitto Rivabella | 0xvitto.eth (@VittoStack) May 10, 2022
10 best resources to kickstart your Web3 development journey in 2022.
A Thread ↓