Blockchainlerin Blockchain'i
Bu belgede "akıllı sözleşme", "hesap" ve "oyuncu" terimleri birbirinin yerine kullanılarak bir blok zinciri varlığını tanımlamak için kullanılır.
Tek oyuncu
Tek bir akıllı sözleşmeyi ele alalım.
TON'da, adres
, kod
, veri
, bakiye
ve diğer özelliklere sahip olan bir şey olarak tanımlanır. Başka bir deyişle, bazı depoları ve davranışları olan bir nesnedir.
Bu davranışın aşağıdaki şekli vardır:
- bir şey gerçekleşir (en yaygın durum, bir sözleşmenin bir mesaj almasıdır)
- Sözleşme, TON Sanal Makinesindeki
kodunu
yürüterek kendi özelliklerine göre bu olayı işler. - Sözleşme, kendi özelliklerini (
kod
,veri
ve diğerleri) değiştirir. - Sözleşme isteğe bağlı olarak çıkış mesajları oluşturur.
- Sözleşme, bir sonraki olay gerçekleşene kadar bekleme moduna geçer.
Bu adımların kombinasyonuna işlem denir. Olaylar tek tek işlenir, bu nedenle işlemler kesin sıralamaya tabidir ve birbirlerini kesemezler.
Bu davranış kalıbı, Oyuncu olarak adlandırılır ve iyi bilinen bir davranış kalıbıdır.
En düşük seviye: Hesap Zinciri
Bir işlem dizisi Tx1 -> Tx2 -> Tx3 -> ....
bir zincir olarak adlandırılabilir. İncelenen durumda, bir hesabın tek bir hesabının işlemlerinin zinciri olduğu için Hesap Zinciri olarak adlandırılır.
Şimdi, işlemleri işleyen düğümlerin zaman zaman akıllı sözleşmenin durumunu koordine etmesi gerektiğinden, bu işlemler toplu olarak yapılır:
[Tx1 -> Tx2] -> [Tx3 -> Tx4 -> Tx5] -> [] -> [Tx6]
.
Toplu işlem, sıralamaya müdahale etmez, her işlem hala yalnızca bir 'önceki işlem' ve en fazla bir 'sonraki işlem'e sahiptir, ancak bu kez bu dizi bloklara bölünür.
Ayrıca, gelen ve giden mesaj kuyruklarını bloklara dahil etmek uygun olacaktır. Bu durumda, bir blok, o blok süresince akıllı sözleşmeyle ilgili olanların ne olduğ
unu belirleyen ve açıklayan tam bir bilgi setini içerir.
Birçok Hesap Zinciri: Bölümler (Shard)
Şimdi birçok hesabı ele alalım. Birkaç Hesap Zinciri elde edebilir ve bunları bir araya koyabiliriz, böyle bir Hesap Zincirleri kümesine Bölüm Zinciri denir. Aynı şekilde, Bölüm Zincirini, bireysel Hesap Bloklarının bir birleşimi olan Bölüm Bloklarına bölebiliriz.
Bölüm Zincirlerinin Dinamik Bölünmesi ve Birleştirilmesi
Bir Bölüm Zinciri, kolayca ayırt edilebilen Hesap Zincirlerinden oluştuğundan, onu kolayca bölebiliriz. Bu şekilde, bir milyon hesapla gerçekleşen olayları açıklayan bir _Bölüm Zinciri_miz varsa ve saniyede işlenip depolanması için çok fazla işlem varsa, zinciri yarım milyon hesaba sahip iki daha küçük _Bölüm Zinciri_ne böleriz ve her zincir ayrı bir düğüm kümesinde işlenir.
Benzer şekilde, bazı bölümler çok boş hale gelirse, bunlar tek bir daha büyük bölüm haline birleştirilebilir.
Açıkça iki sınırlayıcı durum vardır: bir bölümün yalnızca bir hesap içermesi (ve bu nedenle daha da bölünebilir olamaması) ve bir bölümün tüm hesapları içermesi durumu.
Hesaplar birbirleriyle mesaj göndererek etkileşime geçebilir. Mesajları çıkış kuyruklarından ilgili giriş kuyruklarına taşıyan ve 1) tüm mesajların iletilmesini sağlayan 2) mesajların ardışık bir şekilde iletilmesini sağlayan özel bir yönlendirme mekanizması vardır (önce gönderilen mesaj daha önce hedefe ulaşır).
Bölüm zincirlerinin belirlenmesi ve birleştirilmesi için belirlenmiş bir yöntem olan hesap zincirlerinin bir araya getirilmesi, hesap adreslerinin bit temsiline dayanır. Örneğin, adres (bölüm ön eki, adres)
gibi görünebilir. Bu şekilde, bölüm zincirindeki tüm hesaplar tam olarak aynı ikili öneki (örneğin, tüm adresler 0b00101
ile başlar) içerecektir.
Blok Zinciri
Aynı kurallara göre davranan tüm bölümlerin bir araya getirildiği ve tüm hesapları içeren bir Blok Zincirine denir.
TON'da birçok kurallar kümesi ve böylece birbirleriyle et
kileşime geçebilen birçok blok zinciri vardır, aynı şekilde bir zincirdeki hesapların birbirleriyle etkileşime geçebildiği gibi zincirler de birbirleriyle mesajlar göndererek etkileşime geçebilir.
İş Zinciri: Kendi Kurallarınızla Blok Zinciri
Bir grup Bölüm Zincirlerinin kurallarını özelleştirmek isterseniz, bir İş Zinciri oluşturabilirsiniz. İyi bir örnek, EVM tabanında çalışan ve Solidity akıllı sözleşmelerini çalıştıran bir iş zinciri oluşturmaktır.
Teorik olarak, toplulukta herkes kendi iş zincirini oluşturabilir. Aslında, bunu oluşturmak oldukça karmaşık bir görevdir ve oluşturmanın (maliyetli) bedelini ödemek ve işinizin oluşturulmasını onaylamak için doğrulayıcıların 2/3 oyunu almanız gerekir.
TON, 2^30
iş zinciri oluşturmaya izin verir ve her biri 2^60
bölüme ayrılabilir.
Günümüzde, TON'da yalnızca 2 iş zinciri vardır: Master Zinciri ve Base Zinciri.
Base Zinciri, oyuncular arasında günlük işlemler için kullanılır çünkü oldukça ucuzdur, ancak Master Zinciri, TON için kritik bir işlevi olan mesaj yönlendirmesinin ve işlem yürütmenin senkronizasyonunu sağlar. Şimdi Master Zincir'in ne yaptığına bir göz atalım!
Master Zinciri: Blok Zinciri İçindeki Blok Zinciri
Mesaj yönlendirmesinin ve işlem yürütmenin senkronizasyonu için ağdaki düğümlerin bir "nokta"yı düzeltmesi ve bu durumla ilgili bir fikir birliği sağlaması gerekmektedir. TON'da bu amaçla özel bir zincir olan Master Zincir kullanılır. Master Zincir'in blokları, sistemdeki diğer tüm zincirler hakkında ek bilgileri (en son blok karma değerlerini) içerir, böylece herhangi bir gözlemci, tek bir master zincir bloğunda tüm çoklu zincir sistemlerinin durumunu belirsiz bir şekilde belirleyebilir.