Orkestrasyon Ana Kavramlar ve API'leri
Bu belge, Orkestrasyon akıllı sözleşmeleri oluşturma sürecinde yer alan temel kavramların bir özetini sağlar; Odak noktası Orkestratör Arayüzü, Orkestrasyon Hesapları ve ChainHub'dur.
Orkestratör Arayüzü
arayüzü, yerel ve uzak zincirlerle etkileşim ve yönetim için bir dizi yüksek seviyeli yöntem sunar. Aşağıda ana yöntemler verilmiştir:
Zincir Nesnesine Erişim
getChain
, verilenchainName
için bir zincir nesnesi alır ve zincire özgü yöntemlere erişim sağlar. bölümüne bakın.
const chain = await orchestrator.getChain('chainName');
Marka Yardımcı Fonksiyonları
getBrandInfo
, birdenom
hakkında, denomun tutulduğu zincir, ilgili yerel Marka ve ilgili varlığı çıkaran zincir de dahil olmak üzere bilgi döndürür. bölümüne bakın.
const brandInfo = orchestrator.getBrandInfo('denom');
asAmount
, bir denom miktarını bir marka ileAmount
şeklinde dönüştürür. bölümüne bakın.
const amount = orchestrator.asAmount({ denom: 'uatom', value: 1000n });
Orkestrasyon Hesabı
Orkestrasyon hesapları Agoric Orkestrasyon API'sindeki temel bir kavramdır ve arayüzüyle temsil edilir. Bu hesaplar, uzaktaki zincirlerde hesap yönetimi için yüksek seviyeli işlemler sağlar ve zincirler arası hesapların sorunsuz bir şekilde etkileşim ve yönetimini mümkün kılar. Orkestrasyon hesapları, zincirler arası etkileşimlerin karmaşıklığını soyutlayarak geliştiricilerin kullanması için tutarlı ve basitleştirilmiş bir arayüz sunar.
Hesap Oluşturma
makeAccount
(bir zincir nesnesi için) aşağıdaki gibi yerel ve/veya uzak zincirde yeni bir hesap oluşturur.
const [agoric, remoteChain] = await Promise.all([
orch.getChain('agoric'),
orch.getChain(chainName)
]);
const [localAccount, remoteAccount] = await Promise.all([
agoric.makeAccount(),
remoteChain.makeAccount()
]);
Adres Yönetimi
getAddress
, uzaktaki zincirdeki hesabın adresini alır.
const address = await orchestrationAccount.getAddress();
Bakiyeleri Yönetme
getBalances
, hesapta bulunan her bir bakiye için bir miktar dizisi döndürür.getBalance
, hesap için belirli bir denomun bakiyesini alır.
const balances = await orchestrationAccount.getBalances();
const balance = await orchestrationAccount.getBalance('uatom');
Fon Transferi
send
, aynı zincirdeki başka bir hesaba bir miktar gönderir.transfer
, diğer bir hesap, genellikle başka bir zincirde bulunan bir hesaba bir miktar gönderir.transferSteps
, karmaşık transfer yollarını yöneterek bir miktarı birden fazla adımda transfer eder.deposit
, Zoe'den hesaba ödeme yatırır. Uzak hesaplar için burada fonları aktarmak amacıyla bir IBC Transferi gerçekleştirilir.
await orchestrationAccount.send(receiverAddress, amount);
await orchestrationAccount.transfer(amount, destinationAddress);
await orchestrationAccount.transferSteps(amount, transferMsg);
await orchestrationAccount.deposit(payment);
ChainHub
ChainHub, zincirleri, bağlantıları ve denomları merkezi olarak kaydeden bir sistemdir; böylece birden fazla zincirle etkileşimde bulunmayı kolaylaştırır ve Orkestrasyon mantığının çapraz zincir operasyonlarını yönetmesini sağlamak için birleştirilmiş bir arayüz sunar. makeChainHub
çağrısıyla oluşturulan bir chainHub örneği, yeni bir ChainHub oluşturur (veya bir sağlanmadıysa yığın üzerinde). Ortaya çıkan nesne, bir singleton'ıdır. Hiçbir değerli durumu yoktur. Tek durumu agoricNames
'e ve kayıt çağrılarında sağlanan bilgilere yönelik sorguların önbelleğidir. Daha yeni bir versiyona ihtiyaç duyduğunuzda, basitçe bir hub oluşturabilir ve kayıtları tekrarlayabilirsiniz. ChainHub, zincir ve bağlantı bilgilerini dinamik kaydetme ve kullanma yeteneği sağlar:
Kayıt API'leri
registerChain
,chainHub
ile yeni bir zincir kaydeder. İsim, iyi bilinen zincir isimlerindeki bir adı geçersiz kılacaktır.registerConnection
, iki belirli zincir kimliği arasında bir bağlantı kaydeder.registerAsset
, çıkaran zincir dışındaki bir zincirde tutulabilecek bir varlığı kaydeder. Bu çağrıdan önce her iki karşılık gelen zincirin de kaydedilmiş olması gerekmektedir.
Bilgi Alma
getChainInfo
, zincir bilgilerini almak için bir zincir adı alır.getConnectionInfo
, iki belirli zincir kimliği içinVow
döndürür.getChainsAndConnection
, ana ve karşı zincir adları verildiğinde zincir ve bağlantı bilgilerini almak için kullanılır.getAsset
, bir denom için tutulan, çıkaran zincir adlarını vb. alır.getDenom
, birBrand
için denom (string) alır.
Aşağıdaki örnekte, chainHub
yeni bir zinciri kaydetmek ve Agoric zinciri ile yeni kaydedilen zincir arasında bir bağlantı kurmak için kullanılır.
const chainHub = makeChainHub(privateArgs.agoricNames, vowTools);
// Yeni bir zinciri bilgileriyle kaydet
chainHub.registerChain(chainKey, chainInfo);
// Agoric zinciri ile yeni zincir arasında bir bağlantı kaydet
chainHub.registerConnection(
agoricChainInfo.chainId,
chainInfo.chainId,
connectionInfo
);