Export translations
Jump to:
navigation
,
search
Settings
Group
Altchain PoP Lifecycle
Altcoin Add VeriBlock
Community FAQ
Community Resource Contributions
Contribute To VeriBlock
Dashboard API
Demo Code
Developer Guide
FAQ
Getting Started
Global Communities
GRPC
GUI Wallet
How to Mine VeriBlock
How VeriBlock PoP vBFI Protects Altchains
HowTo run NodeCore
HowTo run PoW CPU Miner
HowTo run PoW Miner
Main Page
Mining High Noon
Mining Sunrise Phase
Mining Sunset
Network Health
NodeCore Source Code
PoP Miner API
PoW vs PoP Mining
Social Links
VAIF
VAIF Technical FAQ
VeriBlock and Proof-of-Proof FAQ
Language
aa - Afar
ab - Abkhazian
abs - Ambonese Malay
ace - Achinese
ady - Adyghe
ady-cyrl - Adyghe (Cyrillic script)
aeb - Tunisian Arabic
aeb-arab - Tunisian Arabic (Arabic script)
aeb-latn - Tunisian Arabic (Latin script)
af - Afrikaans
ak - Akan
aln - Gheg Albanian
am - Amharic
an - Aragonese
ang - Old English
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
atj - Atikamekw
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - South Azerbaijani
ba - Bashkir
ban - Balinese
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba (Latin script)
bcc - Southern Balochi
bcl - Central Bikol
be - Belarusian
bg - Bulgarian
bgn - Western Balochi
bho - Bhojpuri
bi - Bislama
bjn - Banjar
bm - Bambara
bn - Bangla
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
btm - Batak Mandailing
bto - Iriga Bicolano
bug - Buginese
bxr - Russia Buriat
ca - Catalan
cbk-zam - Chavacano
cdo - Min Dong Chinese
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cr - Cree
crh - Crimean Turkish
crh-cyrl - Crimean Tatar (Cyrillic script)
crh-latn - Crimean Tatar (Latin script)
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
din - Dinka
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - Doteli
dv - Divehi
dz - Dzongkha
ee - Ewe
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
es-419 - Latin American Spanish
es-formal - español (formal)
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
ff - Fulah
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gag - Gagauz
gan - Gan Chinese
gan-hans - Gan (Simplified)
gan-hant - Gan (Traditional)
gcr - kriyòl gwiyannen
gd - Scottish Gaelic
gl - Galician
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
gor - Gorontalo
got - Gothic
grc - Ancient Greek
gu - Gujarati
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
ht - Haitian Creole
hu - Hungarian
hu-formal - magyar (formal)
hy - Armenian
hyw - արեւմտահայերէն
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kbd - Kabardian
kbd-cyrl - Kabardian (Cyrillic script)
kbp - Kabiye
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kjp - ဖၠုံလိက်
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - Korean (North Korea)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
krl - Karelian
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ku - Kurdish
ku-arab - Kurdish (Arabic script)
ku-latn - Kurdish (Latin script)
kum - Kumyk
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - Lak
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lki - Laki
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzz - Laz
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Maori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mni - Manipuri
mnw - ဘာသာ မန်
mo - Moldovan
mr - Marathi
mrj - Western Mari
ms - Malay
mt - Maltese
mus - Creek
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
niu - Niuean
nl - Dutch
nl-informal - Nederlands (informeel)
nn - Norwegian Nynorsk
nov - Novial
nrm - Norman
nso - Northern Sotho
nv - Navajo
ny - Nyanja
nys - Nyunga
oc - Occitan
olo - Livvi-Karelian
om - Oromo
or - Odia
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rm - Romansh
rmy - Romani
rn - Rundi
ro - Romanian
roa-tara - Tarantino
ru - Russian
rue - Rusyn
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
sa - Sanskrit
sah - Sakha
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
sei - Seri
ses - Koyraboro Senni
sg - Sango
sh - Serbo-Croatian
shi - Tachelhit
shi-latn - Tachelhit (Latin script)
shi-tfng - Tachelhit (Tifinagh script)
shn - Shan
shy-latn - Shawiya (Latin script)
si - Sinhala
sk - Slovak
skr - Saraiki
skr-arab - Saraiki (Arabic script)
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - Serbian (Cyrillic script)
sr-el - Serbian (Latin script)
srn - Sranan Tongo
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
sty - cебертатар
su - Sundanese
sv - Swedish
sw - Swahili
szl - Silesian
ta - Tamil
tay - Tayal
tcy - Tulu
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tn - Tswana
to - Tongan
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - Uzbek (Cyrillic script)
uz-latn - Uzbek (Latin script)
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vo - Volapük
vot - Votic
wa - Walloon
war - Waray
wo - Wolof
wuu - Wu Chinese
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
xsy - saisiyat
yi - Yiddish
yo - Yoruba
za - Zhuang
zea - Zeelandic
zgh - Standard Moroccan Tamazight
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - Chinese (Macau)
zh-my - Chinese (Malaysia)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
qqq - Message documentation
Format
Export for off-line translation
Export in native format
Fetch
See: [[VAIF]] __TOC__ == Overview == Users of a VeriBlock-PoP-secured altchain can use the Bitcoin Finality Indicator ("BFI") to easily determine exactly when a transaction on an altchain network has as much (technically, more) security as a transaction on Bitcoin itself. Proof-of-Proof ("PoP") functions by incentivizing PoP miners to publish fingerprints of a security-inheriting blockchain to a security-providing blockchain in exchange for a reward. In the event that an attacker attempts to reorganize the security-inheriting blockchain, the fork resolution protocol consults these previously-published fingerprints to determine whether the fork is valid or not. If the alternate security-inheriting blockchain fork lacks sufficient publications in the security-providing blockchain (publications do not exist, are too late [past the finality window] in the security-providing blockchain compared to same-height publications of the 'legitimate' security-inheriting chain, and/or the publications of the fork do not contain sufficient context to provide a complete [no gaps] view of the fork), then it is rejected. If the alternate security-inheriting blockchain fork has publications to the security-providing blockchain that are better than the publications of the 'legitimate' current security-inheriting chain, then the fork is accepted. However, this forces the attacker to announce their attack in-step with the building of the legitimate main chain; announcing to the world where their attack starts (which blocks are threatened), and also indicating when their attack is abandoned (they stop building an 'offline' chain). In the absence of such malicious attacking publications for a particular time period (measured in VeriBlock and Bitcoin blocks), the altchain has a mathematical guarantee that unless Bitcoin blocks themselves are reversed (Bitcoin experiences a 51% attack), those altchain blocks can never be replaced. This guarantee is provided by the Bitcoin Finality Indicator ("BFI") which indicates when an altchain block (and its included transactions) have achieved Bitcoin finality, meaning that Bitcoin itself would have to be 51% attacked in order to be able to fork the altchain block off the network and perform a double-spend. In the presence of such malicious attacking publications, everyone can see which altchain blocks are (and are not) threatened by the attack, and know not to finalize/confirm any transactions in such blocks until the attacker either succeeds in a reorg (but no double-spending occurred because nobody confirmed transactions in those blocks which were under attack), or the attacker gives up (and the cessation of malicious attacking publications extending the attacker's chain for a particular time period (measured in VeriBlock and Bitcoin blocks) provides the same mathematical guarantee, albeit delayed, that Bitcoin itself would have to experience a 51% attack in order for those previously-under-attack altchain blocks to ever be reorganized off the chain. A Proof-of-Proof secured altchain protects its users from double-spend (51%) attacks by emitting real-time security statistics for any block (and the transactions included therein) on the altchain network by looking at these malicious publications (or a lack thereof). These security statistics indicate exactly how difficult replacing a particular block (containing a particular transaction) on the altchain network is, ranging from only needing to reorganize ''n'' altchain blocks, to needing to reorganize ''n'' VeriBlock blocks, to needing to reorganize ''n'' Bitcoin blocks. When the number of Bitcoin blocks an attacker would need to reorganize a particular altchain block is greater than zero, that altchain block (and all contained transactions) have achieved Bitcoin-finality, meaning Bitcoin itself would have to experience a 51% attack in order to be able to reverse that altchain block (and all contained transactions). See: [[PoP_FAQ#.22VBK_does_not_protect.2C_it_just_detects.22]] == How VeriBlock Protects my Altchain == Proof-of-Proof ("PoP") functions by incentivizing PoP miners to publish fingerprints of a security-inheriting chain to a highly secure security-providing chain. As explained in the overview, the fork resolution protocol of the security-inheriting chain consults these publications in the event of a proposed reorganization. The software which produces the block security statistics proactively looks at the publications for a particular security-inheriting chain in a particular security-providing chain to determine ''whether it is mathematically possible for an attacker to reorganize the security-inheriting chain without also reorganizing the security-providing chain''. In the example of VeriBlock or altchains secured using VeriBlock, BFI ''indicates whether it is mathematically possible to reorganize a particular VeriBlock/altchain block without 51% attacking Bitcoin'' (and if it isn't, how many Bitcoin blocks would have to be reversed), and ''whether an attacker is currently publishing malicious fingerprints of a reorganization of the VeriBlock/altchain'' (and if so, which blocks are in danger of being reorganized from the published fingerprints of the attack). == BFI Example == Here is a visual demonstration (simulated for illustration purposes) of how PoP security and BFI works from VeriBlock to Bitcoin (and for altchains, the process is extremely similar). An attacker sent a transaction to a would-be victim in a VeriBlock block after 39580, and then started building an attacking VeriBlock chain and performing PoP publications. The attacking chain is longer and has more PoW, and without PoP it would win and result in a chain reorganization/double-spend. In the picture below, the VeriBlock PoP security explorer shows keystones (every 20 blocks for VeriBlock), such that the attacker is at least 40 blocks longer than the main chain. Because PoP forces the attacker to publish themselves to Bitcoin, everyone can see the attack is happening (there is no surprise reorg), and that the attacker is deliberately hiding their blocks from the altchain. ''Note: even though the attacker has not released their fork to the network yet, we can see the geometry of their attack (when did it start, what blocks does it challenge, and how long is it) because of the Proof-of-Proof publications they were requried to produce in order to have a chance at having their fork accepted by the network.'' [[File:Ead_attack_1.png|800px]] The attacker didn't release their reorganization to the network because whoever they were trying to double-spend against was BFI-aware and wasn't confirming the transaction yet (such as an exchange accepting a deposit). Eventually the attacker gave up and stopped building their offline chain (and performing PoP publications of it), because the victim they were trying to double-spend against refused to confirm their transaction until BFI indicated that the attack was resolved, and that the block containing the transaction in question achieved Bitcoin-finality (it is mathematically impossible now to reverse that VeriBlock block unless a 51% attack of Bitcoin occurred as well). [[File:Ead_attack_2.png|800px]] All attacks becomes very obvious to any observer: * Not publishing PoP endorsements will result in the attacker's chain losing when released, even if they have more blocks/higher cumulative PoW/PoS weight/etc. * Publishing PoP endorsements will notify all observers that an attack is occurring. * Waiting too long (past the finality period) to publish PoP endorsements (such as mounting a surprise attack) will result in stale PoP that will lose during fork resolution, so no reorg can be caused * Conflicting PoP Proofs makes consensus attacks extremely obvious to all observers. Everyone can then withhold activities that would cause any loss from overwritten transactions (such as an exchange confirming deposits or a merchant delivering goods). Every option for the attacker results in them spending resources but being unable to perform a double-spend. == Summary == No matter how the attacker tries, they come out behind. The worst they can do is spend exorbitant resources to delay the network. They can no longer steal, reverse, or double-spend transactions. [[File:EAD-Workflow-High-Level.png|800px]]
Navigation menu
Personal tools
English
Log in
Namespaces
Special page
Variants
Views
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
Special pages
Printable version