Slide 1

Slide 1 text

BBc-2 [email protected] https://speakerdeck.com/beyondblockchain BBc-2 — — 2023-11-14 – p.1/27

Slide 2

Slide 2 text

BBc-2 BBc-2 — — 2023-11-14 – p.2/27

Slide 3

Slide 3 text

BBc-2 BBc-2 BBc-1 ( ) / ⇒ / BBc-2 — — 2023-11-14 – p.3/27

Slide 4

Slide 4 text

( ) τʔΫϯ ୅ସ՟ฎ εϚʔτίϯτϥΫτ ݕূՄೳͳঢ়ଶϚγϯ ϓϩϏφϯε དྷྺূ໌ ୅ସՄೳ ঈؐෆೳ ୅ସՄೳ ঈؐՄೳ ୅ସෆೳ ঈؐՄೳ ୅ସෆೳ ঈؐෆೳ ূ໌͢Δ ಉఆ͢Δ ࢧ෷͍౳ ࠷ॳͷԠ༻ *%Χʔυ౳ ηΩϡϦςΟ τʔΫϯ ূ݊ ౳ ηϯαʔ౳ ෺ྲྀɾ Ҩݴॻ౳ อݥਃ੥౳ ௥੻͢Δ ײ஌͢Δ தԝۜߦ σδλϧ௨՟౳ ҭ੒ήʔϜ౳ ൿີ伴Λ࢖͑Δ͔Βຊਓʁ ෛ࠴ Ξηοτͷ ਺஋දݱΛҠసͰ͖Δʁ ొ࿥͞Εͨίʔυͱ ͦͷ࣮ߦϩάͱ݁Ռͷ ਅਖ਼ੑΛ୲อͰ͖Δʁ ݖҖ͕ Կ͔ͷ಺༰Λূ໌͢Δʁ ࣋ଓ͢Δଘࡏʹ͍ͭͯ ه࿥ΛΞοϓσʔτՄʁ ओମ͕͍ͳ͘ͳͬͯ΋ աڈͷσʔλ͸༗ޮʁ /'5 Ұൠతͳ ೝࣝ ػೳͷ ෼ੳ݁Ռ BBc-2 — — 2023-11-14 – p.4/27

Slide 5

Slide 5 text

Ethereum Python BBc-2 — — 2023-11-14 – p.5/27

Slide 6

Slide 6 text

Python 3.8 Solidity 0.5 macOS + Homebrew $ brew install libtool automake pkg-config libffi autoconf openssl Linux (Ubuntu 16.04 LTS ) $ sudo apt install -y git tzdata openssh-server libffi-dev net-tools autoconf automake libtool libssl-dev pkg-config make Windows 10 Linux (Ubuntu 16.04 LTS ) BBc-2 — — 2023-11-14 – p.6/27

Slide 7

Slide 7 text

Ethereum Solidity Ethereum ( ) version 0.5 bbc2 py-solc-x solc (dependencies) solc py-solc-x BBc-2 — — 2023-11-14 – p.7/27

Slide 8

Slide 8 text

Solidity macOS + Homebrew $ brew tap ethereum/ethereum $ brew install solidity Linux (Ubuntu 16.04 LTS ) (x86/AMD64 ) $ sudo apt install software-properties-common $ sudo add-apt-repository -y ppa:ethereum/ethereum $ sudo apt update $ sudo apt install solc ARM solidity git clone dependencies BBc-2 — — 2023-11-14 – p.8/27

Slide 9

Slide 9 text

wget (macOS ) Ganache BBc-2 — — 2023-11-14 – p.9/27

Slide 10

Slide 10 text

wget (macOS ) macOS wget ( ) $ brew install wget wget $ wget ( ) wget dyld: Library not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib $ brew uninstall --force gettext $ brew install gettext BBc-2 — — 2023-11-14 – p.10/27

Slide 11

Slide 11 text

Ganache Ethereum RPC npm ( ) macOS https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09 Linux https://qiita.com/seibe/items/36cef7df85fe2cefa3ea npm Ganache $ sudo npm install -g ganache BBc-2 — — 2023-11-14 – p.11/27

Slide 12

Slide 12 text

Python3 macOS $ brew install python3 Python 3.9 Homebrew $ brew uninstall --ignore-dependencies [email protected] $ brew install [email protected] /opt/homebrew/bin/python3.9 Linux $ sudo apt update $ sudo apt install python3.8 python3.8-dev python3.8-venv python3.8-tk 16.10 python3(.8) apt (PPA ) python3 ( python3.9 ) python3-dev python3-venv python3-tk BBc-2 — — 2023-11-14 – p.12/27

Slide 13

Slide 13 text

Python (venv) macOS (Linux python3 ) ‘python3.9’ ‘python3’ $ python3.9 -m venv bbc2env $ source bbc2env/bin/activate (bbc2env) $ pip install -U pip ( ) (bbc1env) $ deactivate BBc-2 — — 2023-11-14 – p.13/27

Slide 14

Slide 14 text

GitHub git clone $ git clone -b develop https://github.com/beyond-blockchain/bbc2.git $ cd bbc2 tar pip (Python ) $ python setup.py sdist $ pip install dist/bbc2-0.2.1.tar.gz dist tar pip install $ bbc_serv.py +C BBc-2 — — 2023-11-14 – p.14/27

Slide 15

Slide 15 text

Ethereum infura.io Brownie Ethereum ETH BBcAnchor BBc-2 — — 2023-11-14 – p.15/27

Slide 16

Slide 16 text

infura.io infura.io ID https://infura.io SIGN UP PROJECT ID infura Ethereum API infura.io PROJECT ID WEB3_INFURA_PROJECT_ID PROJECT ID (∼/.bash_profile ) $ export WEB3_INFURA_PROJECT_ID= PROJECT ID BBc-2 — — 2023-11-14 – p.16/27

Slide 17

Slide 17 text

(1) BBc-2 Görli Görli ETH ETH Sepolia “.brownie/network-config.yaml” Ethereum networks - chainid: 11155111 explorer: https://api-sepolia.etherscan.io/api host: https://sepolia.infura.io/v3/$WEB3_INFURA_PROJECT_ID id: sepolia multicall2: '0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696' name: Sepolia (Infura) provider: infura BBc-2 — — 2023-11-14 – p.17/27

Slide 18

Slide 18 text

(2) Sepolia $ bbc_eth_tool.py -w ~/.bbc2 -n sepolia set_default_network $ bbc_eth_tool.py -w ~/.bbc2 show_default_network BBc-2 — — 2023-11-14 – p.18/27

Slide 19

Slide 19 text

Brownie “bbc_serv.py” BBc-2 bbc_serv.py Brownie $ bbc_eth_tool.py -w ~/.bbc2 brownie ID BBcAnchor Linux (ARM) (AMD64 ) $ python # >>> import solcx >>> solcx.compile_solc(’0.5.17’) # >>> quit() /tmp ~/.solcx/solc-v0.5.17 BBc-2 — — 2023-11-14 – p.19/27

Slide 20

Slide 20 text

Ethereum görli sepolia Ethereum $ bbc_eth_tool.py -w ~/.bbc2 account görli sepolia Ethereum $ bbc_eth_tool.py -w ~/.bbc2 new_account BBc-2 BBc-2 — — 2023-11-14 – p.20/27

Slide 21

Slide 21 text

g¨ orli/sepolia ETH (0.1ETH ) Görli/Sepolia Testnet ETH Faucet ETH https://goerlifaucet.com https://sepoliafaucet.com ( ) ( ) Görli Faucet 0.001 ETH https://metamask.io/ ETH ( ) $ bbc_eth_tool.py -w ~/.bbc2 balance wei (1 ETH = 1000000000000000000 wei) BBc-2 — — 2023-11-14 – p.21/27

Slide 22

Slide 22 text

BBcAnchor ( ) $ bbc_eth_tool.py -w ~/.bbc2 deploy BBcAnchor deployed at BBc-2 BBc-2 — — 2023-11-14 – p.22/27

Slide 23

Slide 23 text

BBcAnchor.sol ( ) contract BBcAnchor { mapping (uint256 => uint) public _digests; constructor () public { } function getStored(uint256 digest) public view returns (uint block_no) { return (_digests[digest]); } function isStored(uint256 digest) public view returns (bool isStored) { return (_digests[digest] > 0); } function store(uint256 digest) public returns (bool isAlreadyStored) { bool isRes = _digests[digest] > 0; if (!isRes) { _digests[digest] = block.number; } return (isRes); } } BBc-2 — — 2023-11-14 – p.23/27

Slide 24

Slide 24 text

BBc-2 BBc-2 — — 2023-11-14 – p.24/27

Slide 25

Slide 25 text

(“bbc_serv.py” ) $ bbc_eth_tool.py -w ~/.bbc2 config_demo 100 30 domain_id ( ) “bbc_serv.py” $ bbc_eth_tool.py -w ~/.bbc2 -d enable BBc-2 — — 2023-11-14 – p.25/27

Slide 26

Slide 26 text

3 $ bbc_eth_tool.py -w ~/.bbc2 -d register_demo 3 $ bbc_eth_tool.py -w ~/.bbc2 -d verify 30 verify BBc-2 — — 2023-11-14 – p.26/27

Slide 27

Slide 27 text

BBc-2 Ethereum verify “bbc_eth_tool.py” BBc-2 — — 2023-11-14 – p.27/27