Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2nd presentation of ライトニングネットワーク JBA 2018/04/24
Search
Takaya Imai
April 24, 2018
Technology
210
0
Share
2nd presentation of ライトニングネットワーク JBA 2018/04/24
JBA(日本ブロックチェーン協会)にてライトニングネットワークの技術と将来像を話をしました。これは2個目のプレゼン資料です。
Takaya Imai
April 24, 2018
More Decks by Takaya Imai
See All by Takaya Imai
ライトニングネットワーク ペイメントの新潮流〜貨幣システムはどこまで刷新されるのか〜
takayaimai
0
600
サイドチャネル攻撃とその防衛手法@暗号通貨読書会#34
takayaimai
2
910
Spartan: Efficient and general-purpose zkSNARKs without trusted setup
takayaimai
0
560
Bitcoin History and Lightning Network in Future - ligtning hackday hong kong 2019
takayaimai
0
220
ライトニングネットワーク 技術基礎と今後の見通し
takayaimai
4
1.3k
Lightning Factories
takayaimai
1
620
Lightning_ecosystem_HashHub20180721.pdf
takayaimai
1
170
booting_lightning-node.pdf
takayaimai
0
130
Blockchain技術勉強会 #Lightning Networkの技術と最前線
takayaimai
4
1.2k
Other Decks in Technology
See All in Technology
あるアーキテクチャ決定と その結果/architecture-decision-and-its-result
hanhan1978
1
380
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.1k
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
1.9k
OpenClawでPM業務を自動化
knishioka
2
390
Kubernetes基盤における開発者体験 とセキュリティの両⽴ / Balancing developer experience and security in a Kubernetes-based environment
chmikata
0
170
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
280
JSTQB Expert Levelシラバス「テストマネジメント」日本語版のご紹介
ymty
0
130
自分をひらくと次のチャレンジの敷居が下がる
sudoakiy
5
1.8k
Claude Teamプランの選定と、できること/できないこと
rfdnxbro
1
740
「決め方」の渡し方 / How to hand over the "decision-making process"
pauli
7
1.2k
チームで育てるAI自走環境_20260409
fuktig
0
740
Cortex Codeでデータの仕事を全部Agenticにやりきろう!
gappy50
0
300
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Chasing Engaging Ingredients in Design
codingconduct
0
160
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
Faster Mobile Websites
deanohume
310
31k
Being A Developer After 40
akosma
91
590k
Speed Design
sergeychernyshev
33
1.6k
Designing Experiences People Love
moore
143
24k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
140
Paper Plane (Part 1)
katiecoart
PRO
0
6.4k
Transcript
2nd-layerٕज़ʢϥΠτχϯάωοτϫʔΫʣ 5BLBZB*NBJ $&0!'SPOUJFS1BSUOFST--$ $PGPVOEFSBOE$50!6OJUFE#JUDPJOFST*OD +#" ຊϒϩοΫνΣʔϯڠձ
ࣗݾհ ϑϩϯςΟΞύʔτφʔζ߹ಉձࣾ දCEO United Bitcoiners Inc. ڞಉۀऀˍऔకCTO ϚελϦϯάϏοτίΠϯɺ༁ऀද ੈքͰॳΊͯͷɺຊޠʹΑΔϏοτίΠϯɾϒϩοΫνΣʔϯ ͷৄࡉٕज़ॻ
2016/7/14ग़൛ ిࢠॻ੶൛(kindle) ΦʔϓϯΤσΟγϣϯ൛ https://www.bitcoinbook.info ౦ژେֶ٬һݚڀһ
ࣗݾհ όοΫάϥϯυ ৽ׁେֶେֶӃɹૉཻࢠཧཧɹത࢜(ཧ) ΧΧΫίϜ ݕࡧΤϯδϯ։ൃɹݕࡧαʔόΫϥελߏஙӡ༻ɹେنσʔλॲཧɹػցֶशɹ ը૾ೝࣝ σʔλλϫʔגࣜձࣾɹදऔక
ϥΠτχϯάωοτϫʔΫʁ
ϥΠτχϯάωοτϫʔΫʁ 20152݄ʹJoseph PoonͱThaddeus DryjaʹΑͬͯఏҊ͞ ΕͨϏοτίΠϯ্ͷηΧϯυϨΠϠʔٕज़ औҾखྉΛ҆͘͢Δ͜ͱͱૹۚΛ͘͢Δ͜ͱΛ తͱ͍ͯ͠Δ “νϟωϧ”ͱ͍͏̎ऀؒૹۚܦ࿏ʹΑΔP̎PωοτϫʔΫ Ͱ͋ΓɺෳͷνϟωϧΛܦ༝ͯ͠ૹۚ͢Δ νϟωϧऔҾ૬खɺૹۚհऀΛ৴༻͢Δඞཁ͕ͳ͍
ϏοτίΠϯͷ εέʔϦϯά εέʔϦϯά ඵؒऔҾ͕̓݅ఔ 1MB / 256byte /10/60ඵ = 6.8औҾຖඵ
Segwit (Segregated Witness)༗ޮԽޙɺ̍ϒϩοΫʹ̍MBΑΓೖΔΑ͏ʹͳͬͨͨΊɺඵؒऔҾ લΑΓվળ ϒϩοΫνΣʔϯαΠζͷ૿େ ̍̒̌GBऑ (2018/3/7ݱࡏ) τϥϯβΫγϣϯखྉͷߴಅ ૹ͞ΕΔτϥϯβΫγϣϯͷ͕૿͑ΔͱɺϚΠφʔΑΓखྉͷߴ͍τϥϯβΫγϣϯ͔Β ϒϩοΫʹऔΓࠐ͏ͱ͢Δ ࠷ۙ̍ճͷૹۚ͋ͨΓ5ԁऑ(1satoshi/byte) 201712݄ϐʔΫͰ̍ճͷૹۚ͋ͨΓ4000ԁఔͷͱ͖͋ͬͨ
None
160GB
4.6tx/sec
4000ԁ͘Β͍/tx
͍Ζ͍Ζͳղܾࡦ ΦϯνΣʔϯεέʔϦϯά औҾຖʹϒϩοΫνΣʔϯʹॻ͖ࠐΉ͜ͱΛલఏͱͯ͠ɺॲཧೳ ྗͷ૿ڧΛ͢ΔεέʔϦϯάํ๏ ΦϑνΣʔϯεέʔϦϯά ϒϩοΫνΣʔϯʹॻ͖ࠐΉճΛݮΒ͢͜ͱͰɺॲཧೳྗͷ૿ ڧΛ͢ΔεέʔϦϯάํ๏ ϒϩοΫνΣʔϯͷརΛ׆༻ͭͭ͠ɺϒϩοΫνΣʔϯͱ૬ ޓ࡞༻Λසൟʹ͠ͳ͍ॲཧΛઃ͚ͯૹۚॲཧΛ࣮ߦ͢Δ
͍Ζ͍Ζͳղܾࡦ ΦϯνΣʔϯଆ ผͷϒϩοΫνΣʔϯʹॲཧΛԡ͠Δ αΠυνΣʔϯ/υϥΠϒνΣʔϯ τϥϯβΫγϣϯͷσʔλͷҰ෦Λผʹԡ͠Δ SegWit (Segregated Witness) ϒϩοΫαΠζΛେ͖͘͢Δ ϏοάϒϩοΫ
ϒϩοΫͷୡํ๏ͷվળɺGraphen τϥϯβΫγϣϯͷαΠζΛখ͘͢͞Δ γϡϊΞॺ໊(Schnorr Signature) Θͳ͍τϥϯβΫγϣϯεΫϦϓτΛল͘ɺ Graftroot ΦϑνΣʔϯଆ ϥΠτχϯάωοτϫʔΫ Ethereum(ϥΠσϯωοτϫʔΫɺϚΠΫϩϥΠσϯ ωοτϫʔΫ)
#MPDLDIBJO DPOOFDUFEUP #JUDPJO ;DBTI #MPDLDIBJO &UIFSFVN #MPDLDIBJO #JUDPJO #MPDLDIBJO ʜ
-JHIUOJOH/FUXPSL "UPNJD 4XBQ 1BZQBM 7JTB $PTNPT #MPDLDIBJO DPOOFDUFEUP TPNF CMPDLDIBJOT 3BJEFO/FUXPSL ΦϯνΣʔϯଆ ΦϑνΣʔϯଆ 4JEFDIBJO ϒϩοΫνΣʔϯ֎ ֤ٕज़ͷؔ࿈Πϝʔδ *OUFSMFEHFS
ϥΠτχϯάωοτϫʔΫʁ ಛΛ̍ͭ̍ͭઆ໌͠·͢ɻ
ϥΠτχϯάωοτϫʔΫʁ جຊతͳΞΠσΞ̍ ຖճऔҾΛϒϩοΫνΣʔϯʹॻ͖ࠐΉͷͰͳ͘ɺ֤औҾͷ݁Ռͱͯ͠ਖ਼ຯͷ͓ۚΛ࠷ޙ ʹૹΔ ྫ 1. A͞Μ͕B͞Μʹ1000ԁିͨ͠ 2. B͞Μ͕A͞Μʹ500ԁ͝൧Λग़ͨ͠ 3.
݁ہɺB͞ΜA͞Μʹ500ԁฦͨ͠ ͜ΕΛͰ͖ΔΑ͏ʹ͢ΔೋऀʹΑΔ࠷খߏ୯ҐΛνϟωϧͱ͍͏ɻ νϟωϧHTLC(Hashed Time Lock Contractɺϋογϡ੍͖࣌ؒݶίϯτϥΫτ)Λͬͯ ࡞Δ ࠷ऴঢ়ଶΛϒϩοΫνΣʔϯʹॻ͖ࠐΉ·Ͱɺ྆ऀͷ߹ҙͷ্Ͱঢ়ଶͷߋ৽Λ͢Δ
ϥΠτχϯάωοτϫʔΫʁ جຊతͳΞΠσΞ̍ νϟωϧΛ࡞ͬͨยํͷਓ͕ѱਓͰɺࣗͷૹۚΛͳ͔ͬͨ͜ͱʹ͍͕ͨͨ͠Ίʹɺ࠷ऴ ঢ়ଶͰͳ͍ͷΛҰํతʹϒϩοΫνΣʔϯʹॻ͖ࠐΜͩΒͲ͏͢Δͷʁ ࠷ऴঢ়ଶͰͳ͍τϥϯβΫγϣϯʹɺѱਓଆʹର͢Δࢿۚ༻੍࣌ؒݶ͕͔͔ͬ ͍ͯ·͢ɻ ରͯ͠ɺળਓଆѱਓଆ͔ΒΒͬͨγʔΫϨοτΩʔΛ࠷ऴঢ়ଶͰͳ͍τϥϯβ Ϋγϣϯʹରͯ͠͏ͱɺνϟωϧ্ʹ͋ͬͨѱਓͷࢿۚΛͪʹશͯୣ͑ΔΑ͏ʹ ͳ͍ͬͯ·͢ɻ γʔΫϨοτΩʔ࠷ऴঢ়ଶʹ྆ऀ͕߹ҙ͢Δࡍʹɺ྆ऀ͕औΓަΘ̍͢ݸલͷ
ͷΛແޮԽ͢ΔͨΊͷΩʔ ͜ͷΑ͏ͳϖφϧςΟʔ͕͋ΔͨΊɺѱਓଆʹ૬खΛཪΔΠϯηϯςΟϒ͕ͳ͍ ѱਓଆͷཪΓʹର͙ͯ͢͠ʹϖφϧςΟʔΛߦͰ͖ΔΑ͏ʹɺτϥϯβΫγϣϯΛৗ ʹࢹ͓͔ͯ͠ͳ͚Ε͍͚ͳ͍
ϥΠτχϯάωοτϫʔΫʁ جຊతͳΞΠσΞ̎ ϒϩοΫνΣʔϯͷෛՙΛԼ͛ɺखྉΛ҆͘͢ΔͨΊɺνϟωϧΛෳ ͭͳ͍Ͱૹۚ͢Δ
ϥΠτχϯάωοτϫʔΫʁ հऀ͕͓ۚΛ౪ΊΔͷͰʁ հऀBob͕͓ۚΛಘΔͨΊʹϓϨΠϝʔδͱݺΕΔจࣈྻ͕ͳ͍ͱ͍͚ ͳ͍ Bob͓ۚΛհ͢Δͱ͍͏ଋ͢Δ͕ɺଋͨ࣌͠ͰϓϨΠϝʔδΛ ϋογϡԽͨ͠ϓϨΠϝʔδϋογϡ͔࣋ͬͯ͠ͳ͍ͨΊɺ͓ۚΛ౪Ίͳ͍ ͜ΕΛ࣮ߦ͢ΔͨΊʹHTLCΛ͏ ૹۚऀ डۚऀ "MJDF
#PC $BSPM
ϥΠτχϯάωοτϫʔΫʁ ૹۚऀ डۚऀ "MJDF #PC $BSPM $BSPMϓϨΠϝʔδ 3 $BSPMϓϨΠϝʔδϋογϡ )
ϥΠτχϯάωοτϫʔΫʁ ૹۚऀ डۚऀ "MJDF #PC $BSPM $BSPM ϓϨΠϝʔδϋογϡ ) ᶃϓϨΠϝʔδϋογϡ)ૹ
UYXJUI) OFFE3 UPVTF UYXJUI) OFFE3 UPVTF ᶄ59XJUI)ૹ UYXJUI) OFFE3 UPVTF ᶅ59XJUI)ૹ ᶆϓϨΠϝʔδ3ૹ 3 ᶇϓϨΠϝʔδ3ૹ 3 $BSPM ϓϨΠϝʔδ 3 ଋ͢Δ͚Ͳ౪Ίͳ͍ Carol R͕͋Δ͔Β ड͚औΕΔ
ϥΠτχϯάωοτϫʔΫʁ Carol͕ҙѱͰɺϓϨΠϝʔδRΛ͘Εͳ͔ͬͨΒBobCarolʹ͓ۚΛୣΘΕͯऴΘ Γʁ ڠྗతνϟωϧΫϩʔζʹ͢Δ߹ɺ૬ख͔Βࢧ͍தͷͷ(in-flight HTLC)ͷϓ ϨΠϝʔδRΛΒΘͳ͍ͱԠ͡ͳ͍Α͏ʹ͢Δ Carol͕ͣͬͱRΛͣ͞ҰํతʹνϟωϧΫϩʔζ͓ۚ͠Λͬͨ߹ɺϓϨΠ ϝʔδRύϒϦοΫϒϩοΫνΣʔϯ্Ͱެ։͞ΕΔͨΊɺͦΕΛͬͯBob Alice͔Β͓ۚΛಘΔɻͨͩ͠ɺ͕͔͔࣌ؒΔɻ Carol͕ͣͬͱRΛͣ͞ɺ͔͓ۚ͠ΛΘͳ͔ͬͨ߹ɺBob͋Β͔͡Ίઃ
ఆ͓͍ͯͨ࣌ؒ͠Ҏ߱ʹͳΕ͓ۚΛऔΓͤΔ༏ઌݖ͕͋Δɻͨͩ͠ɺ͕࣌ؒ ͔͔Δɻ ૹۚऀ डۚऀ "MJDF #PC $BSPM
ϥΠτχϯάωοτϫʔΫʁ ϊʔυ ϊʔυ ϊʔυ*% ϊʔυ νϟωϧ ϊʔυ νϟωϧ νϟωϧ νϟωϧ
ϊʔυ ϊʔυ*% ϊʔυ*% ϊʔυ*% ϊʔυ νϟωϧ ϊʔυ*% νϟωϧ ϊʔυ ϊʔυ*% ͷେ͖͞νϟωϧʹ͍ͬͯΔϏοτίΠϯͷྔ
ϥΠτχϯάωοτϫʔΫ ϊʔυϓϩδΣΫτҰཡ $PNQBOZ 0SHBOJ[BUJPO -JHIUOJOH -BCT .*5%$* #MPDLTUSFBN "$*/2 CDPJOPSH
/BZVUB OPUIJOH 1SPEVDU /BNF MOE MJU MJHIUOJOHE FDMBJS QMBTNB QUBSNJHBO MOXBMMFU $PNNJUPST 5IBEEFVT %SZKB +PTFQI 1PPO 0MBPMVXB 0TVOUPLVO 5IBEEFVT %SZKB 3VTUZ3VTTFM $ISJTUJBO %FDLFS 1JFSSF.BSJF 1BEJPV 'BCSJDF %SPVJO EQBE $ISJTUPQIFS +F⒎SFZ OBZVUBVFOP "OUPO ,VNBJHPSPET LJ -BOHVBHF (P (P $ 4DBMB /PEFKT $ 4DBMB pSTUDPNNJU +45 MBTUFTU DPNNJU +45 HJUIVC IUUQT HJUIVCDPN MJHIUOJOHOFU XPSLMOE IUUQT HJUIVCDPN NJUEDJMJU IUUQT HJUIVCDPN &MFNFOUT1SPK FDUMJHIUOJOH IUUQT HJUIVCDPN "$*/2FDMBJS IUUQT HJUIVCDPN CDPJOPSH QMBTNB IUUQT HJUIVCDPN OBZVUBDP QUBSNJHBO IUUQT HJUIVCDPN CUDPOUSBDU MOXBMMFU PUIFST BOESPJEBQQ
ςετωοτ ࢲͷϊʔυ: btctest.lnetwork.tokyo (160.16.233.215)
ϝΠϯωοτ ϦΞϧͳ͓͕ۚྲྀΕΔϥΠτχϯάωοτϫʔΫ 20183݄22
ϝΠϯωοτ 20184݄24
ࢲͷϊʔυ: btc.lnetwork.tokyo (153.126.136.98) pubkey: 028dcc199be86786818c8c32bffe9db8855c5fca98951eec99d1fa335d841605c2
ٕज़ৄࡉ ٕज़ৄࡉʹ͍ͭͯͪ͜ΒΛࢀর͍ͩ͘͞(ӳޠ) 20176݄ʹΠεϥΤϧͷςϧΞϏϒͰࢲ͕ͨ࣌͠ ͷࢿྉ https://www.slideshare.net/takayaimai/lightning- network-in-tel-aviv-israel ࠷৽࣮͔Βগ͠ဃ͕͋Γ·͕͢ɺجຊతͳಈ࡞ ݪཧಉ͡Ͱ͢ɻ
͍ͯ͠Δ ϥΠτχϯάٕज़̍
͍ͯ͠Δ ϥΠτχϯάٕज़̍ AMP: Atomic Multi-Path Payments(ΞτϛοΫෳܦ࿏ࢧ͍) ݱঢ় ૹۚऀ͔Βडۚऀͷૹۚܦ࿏̍ͭ ྫ͑ɺ100ԁΛૹΓ͍ͨ߹ɺૹۚऀ͔Βडۚऀͷܦ࿏ͷશͯͷνϟωϧ͕100ԁૹۚՄೳͰͳ͍ͱ ͍͚ͳ͍
·ͱ·͓ͬͨۚΛૹΕͳ͍ ̍ສԁͳͲ͋Δఔ·ͱ·͓ͬͨۚɺϥΠτχϯάωοτϫʔΫΛΘͳ͍΄͏͕͍͍ͱࢥ͍ ·͢ νϟωϧʹଟ͘ͷ͓ۚΛஔ͍͓ͯ͘ͷࢿ͕ۚ๛͔ͳਓ -> தԝूݖԽ 1ͭͷૹۚܦ࿏ʹґଘͯ͠͠·͏ ૹۚܦ࿏্ͷϊʔυ͕ૹۚதʹԠ͠ͳ͘ͳΔͳͲ͕ى͖ͨ߹ɺૹ్͕ۚதͰࢭ·ͬͯ͠·ͬ ͯಈ͔ͳ͘ͳΔͱ͍͏͜ͱͳ͍͕ɺૹۚྃ·Ͱ͕͔͔࣌ؒͬͯ͠·͏
͍ͯ͠Δ ϥΠτχϯάٕज़̍ AMP: Atomic Multi-Path Payments(ΞτϛοΫෳܦ࿏ࢧ͍) ղܾํ๏ ̍ճͷૹۚΛɺෳͷૹۚܦ࿏ʹׂͯ͠ૹΔ ྑ͍ ૹۚܦ࿏ͷબࢶ͕ͬͱ૿͑ɺϥΠχϯάωοτϫʔΫશମͷϦιʔεΛ͏·͑͘Δ
νϟωϧʹେ͖ͳ͓ۚΛஔ͍͓͔ͯͳͯ͘ɺϥΠτχϯάωοτϫʔΫʹߩݙͰ͖Δ ѱ͍ ϥΠτχϯάωοτϫʔΫશମͰͷૹۚॲཧ૿͑ΔͨΊɺׂΛେ͖͗͘͢͠ΔͱϥΠτ χϯάωοτϫʔΫ͕ͯ͠͠·͏
͍ͯ͠Δ ϥΠτχϯάٕज़̍ AMP: Atomic Multi-Path Payments(ΞτϛοΫෳܦ࿏ࢧ͍) ਐల۩߹ ΞτϛοΫੑͷఆٛ࠷దͳ࣮ํ๏ʹ͍ͭͯɺlightning-devϝʔϦϯάϦετͰٞத ·ͩϥΠτχϯάωοτϫʔΫRFCʹͳ͍ͬͯͳ͍ ͜ΕɺݸਓతʹScaling
Bitcoin Workshop 2017 @ Stanford Univ. ʹఏҊ͍ͯͨ͠ͷ(೦ͳ͕ΒτʔΫ ʹ࠾༻͞Ε·ͤΜͰ͕ͨ͠ɻɻ) https://github.com/takaya-imai/packetization_for_paymentchannel
͍ͯ͠Δ ϥΠτχϯάٕज़̎ εϚϗΞϓϦΛϥΠτχϯάωοτϫʔΫʹ डۚͰ͖Δ lnwallet http://lightning-wallet.com
͍ͯ͠Δ ϥΠτχϯάٕज़̎ ໘ന͍ τϥϯβΫγϣϯͷࢹόοΫΤϯυ͕࣮ͯ͋͠Γɺࢹͷࢄҕ͕Ͱ͖Δ ୯७ʹɺεϚϗΞϓϦϥΠτχϯάωοτϫʔΫʹࢀՃͰ͖·ͤΜ εϚϗͷి͕ΕΔɺΠϯλʔωοτʹଓͰ͖ͳ͘ͳΔͳͲͯ͠ɺτϥϯβΫγϣϯͷࢹ͕ Ͱ͖ͳ͘ͳΔͨΊɻ ૹ͚ۚͩͰ͋ΕͰ͖·͕͢ɺϥΠτχϯάωοτϫʔΫͷҰ෦ͱͯ͠ૹۚܦ࿏ʹߩݙ͢Δʹૹ ۚͱडۚͷ྆ํ͕ඞཁ ݱঢ়·ͩશͳࢄҕͰͳ͍Ͱ͢
ࢹͷࢄҕΛड͚ΔଆʹͱͬͯͷΠϯηϯςΟϒ͕͢Ͱʹ࣮ͯ͋͠Δ εϚϗ্ͷτϥϯβΫγϣϯσʔλ͕յΕͯ͠·ͬͨͳ͘ͳͬͯ͠·ͬͨͱ͖ͷͨΊʹɺόοΫΞοϓΛ औ͓ͬͯ͘͜ͱ͕Ͱ͖Δ ͜ΕΒΛߦ͏ͷ͕ɺOlympusαʔόͰ͢ɻ εϚϗΞϓϦϋϯζΦϯΛ͍ͬͯΔͷͰɺͦ͜Ͱਐల۩߹ެ։͍͖ͯ͠·͢ɻ
ڵຯ͕͋Δํ͝ࢀՃ͍ͩ͘͞ɻ
ϏοτίΠϯɾϒϩοΫνΣʔϯεΫʔϧͬͯ·͢ ͝ڵຯ͋ΔํࢀՃ͍͚ͨͩΕͱࢥ͍·͢ɻ
fin.