blockchain-2023-2024-spring

Forced money, ABI, Blockchain governance & more

selfdestruct()


Side note proxy smart contract;



// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0 <0.9.0;


contract A {
    uint256 number = 10;

    function getNum() public view returns(uint256) {
        return number;
    }

    function destroySC(address payable _addr) public {
        selfdestruct(_addr);
    }

    function getBalance() public view returns(uint256) {
        return address(this).balance;
    }

    function receive() external payable { }
    function fallback() external payable { }

}

contract B {

    function getBalance() public view returns(uint256) {
        return address(this).balance;
    }
}

Ако се опитаме да достъпим property на унищожен СК, би трябвало да получим грешка:

img

ABI

ledger world
A -> B // само подписване, заявката не напуска ledger-а

отвън $\to$ ledger world - трябва ни ABI, за да укажем как да се осъществи комуникацията

Пример

[
	...
	{ // една функция
		"inputs": [],
		"name": "getBalance",
		"outputs": [
			{
				"internalType": "uint256",
				"name": "",
				"type": "uint256"
			}
		],
		"stateMutability": "view",
		"type": "function"
	},
    ...

]

Bytecode

60806040525f600155603260025f6101000a81548160ff0219
16908360ff160217905550600a600260016101000a81548160ff...

Blockchain governance

ERC(Ethereum request for comment)


Side note Ethereum Magicians
хора, които директно са въвлечени в разработката


Security & Privacy

51% attack

В публичните мрежи е много трудно да се стигне до този случай, много изчислителна мощ е необходима

Race attack

Finney attack

Miner генерира блок, където той включва транзакция от адрес A към адрес B, като и двата адреса принадлежат на него и засега не го обявява. Пуска същата транзакция от A към C(принадлежи на този, на когото miner-ът би трябвало да плати). Ако собственикът на C приеме транзакцията без тя да бъде потвърдена, miner-ът може да излъчи блока, в който е включена първата транзанкция, което прави втората невалидна.

Side note selfish mining

Re-entrancy attack

  1. requires
  2. transfer
  3. subtract

Styling a smart contract

Security

В DAO hack случая е нарушен:

  1. requires - check
  2. transfer - interaction
  3. subtract - effect

General architecture guidelines

Infura

❗ infura - услуга, един node за публична употреба, ако нямаме node няма как да се вържем с мрежата и да interact-ваме с протокола

Ethereum 2.0 - за събота