Donacje & smart kontrakt
Phantom jest i pozostanie bezpłatny, open-source i bez reklam. Finansowany wyłącznie przez społeczność. Na razie przyjmujemy wyłącznie wpłaty bezpośrednie na adresy poniżej — smart kontrakt jest w budowie.
Smart kontrakt wkrótce
Docelowo wszystkie donacje ETH i ERC-20 obsłuży open-source'owy kontrakt na Ethereum Mainnet, z kodem zweryfikowanym na Etherscan. Sekcja poniżej pokazuje planowany kształt — aktywuje się po wybiciu kontraktu.
0x_REPLACE_AFTER_DEPLOY
| Link | |
|---|---|
| Kontrakt na Etherscan | etherscan.io ↗ |
| Zweryfikowany kod źródłowy | Etherscan → Code ↗ |
| Kod na GitHub | P2PDonations.sol ↗ |
Jak wpłacić ETH
Wyślij ETH bezpośrednio na poniższy adres z dowolnego portfela. To zwykły adres, nie kontrakt — wpłata nie generuje jeszcze publicznego eventu on-chain.
0xdD5775D8F839bDEEc91a0f7E47f3423752Ed6e4F
Wpłata z wiadomością on-chain wkrótce
-
Otwórz kontrakt na Etherscan
Przejdź do zakładki Write Contract na stronie kontraktu.
-
Połącz portfel
MetaMask, Rabby, Rainbow lub inny portfel kompatybilny z WalletConnect.
-
Wywołaj
donate(message)Podaj kwotę ETH i opcjonalną wiadomość. Wiadomość zostanie na stałe zapisana on-chain w evencie
Donation.
receive() i wyemituje event Donation z pustą wiadomością.
Jak wpłacić USDC
Standardowy transfer ERC-20 na adres poniżej — bez zatwierdzania (approve), bo to zwykły adres, nie kontrakt.
0xF6F3ba1E29798226699D93c9924a33683C3c2570
DAI i zatwierdzanie przez kontrakt wkrótce
-
Zatwierdź kontrakt do wydawania tokenów
Przejdź do kontraktu USDC lub DAI na Etherscan → Write Contract →
approve(spender, amount). Jakospenderwpisz adres kontraktu Phantom. -
Wywołaj
donateToken()na kontrakcie PhantomPodaj adres tokenu, kwotę i opcjonalną wiadomość.
Jak wpłacić BTC
Standardowy Bitcoin on-chain. Lightning Network w planach.
bc1qjhcgglnt548q7ch5qpv7fe400dyq5k4n6hq6xa
Jak kontrakt będzie działał technicznie wkrótce po wybiciu kontraktu
Kilka właściwości planowanego kontraktu istotnych dla darczyńców — aktywne dopiero po wdrożeniu na mainnet.
Środki trafiają bezpośrednio do kontraktu. Wypłata możliwa wyłącznie przez właściciela kontraktu — bez możliwości wydatkowania przez osoby trzecie.
Każda wpłata emituje event Donation (ETH) lub TokenDonation (ERC-20) z adresem darczyńcy, kwotą, wiadomością i timestampem. Wszystko widoczne publicznie na Etherscan.
Transparentność działa w obie strony. Każda wypłata emituje event Withdrawal lub TokenWithdrawal z adresem docelowym i kwotą — widać nie tylko ile wpłynęło, ale i na co idą środki (patrz: Jak wydajemy środki).
Kontrakt udostępnia odczyt bez transakcji: totalDonated, totalWithdrawn, donationCount oraz donatedBy(adres). Można je zaciągnąć wprost z blockchainu — bez naszego serwera.
Ownership kontraktu zostanie przeniesiony na multisig Safe (dawniej Gnosis Safe) — wypłata wymaga wtedy potwierdzenia przez kilku sygnatariuszy, więc pojedynczy skradziony klucz nie ruszy środków.
// fragment kontraktu P2PDonations.sol
event Donation(
address indexed donor,
uint256 amount,
string message,
uint256 timestamp
);
function donate(string calldata message) external payable {
_registerDonation(msg.sender, msg.value, message);
}
function _registerDonation(address donor, uint256 amount, string memory message) internal {
if (amount == 0) revert ZeroAmount();
totalDonated += amount;
donationCount += 1;
donatedBy[donor] += amount;
emit Donation(donor, amount, message, block.timestamp);
}