Akıllı kontratlar
Akıllı Sözleşme (bundan böyle Sözleşme olarak anılacaktır), bir uygulamanın temel unsurlarından biridir. Kullanıcı tarafından bir sayfada bir sözleşmenin uygulanması genellikle tek bir işlemdir ve amacı bir veritabanı girdisini güncellemek veya oluşturmaktır. Bir uygulamanın tüm veri işlemleri bir sözleşme sistemi oluşturur ve bu sözleşmeler, veritabanı veya sözleşme içeriği işlevleri aracılığıyla birbirleriyle etkileşime girer.
Kontrat yapısı
Bir sözleşme bildirmek için contract
anahtar sözcüğünü, ardından kontrat adını kullanın ve kontrat içeriği parantez içine alınmalıdır. Bir kontrat temel olarak üç bölümden oluşur:
data - data section, değişken adı ve değişken türü dahil olmak üzere giriş verilerinin değişkenlerini bildirir;
conditions - conditions section, nerede verilerin doğruluğunu onaylar;
action - action section, nerede veri manipülasyonlarını tanımlar.
Data section
Data
bölümü, sözleşme veri girişlerini ve alınan form parametrelerini açıklar.
Her satırın sıraya göre yapısı:
- Değişken adı - dizileri değil, yalnızca değişkenleri alır;
- Değişken veri türü - değişkenin veri türü;
- isteğe bağlı - form öğesini doldurması gerekmeyen isteğe bağlı bir parametre.
Conditions section
conditions
bölümü, alınan verilerin doğrulanmasını açıklar.
Hata uyarıları için şu komutlar kullanılır: ciddi hatalar error
, uyarı hataları warning
, düşündürücü hatalar info
. Bu üç komut, sözleşmelerin yürütülmesini sonlandıran bir hata üretecek ve her hata, farklı türde bir hata günlüğü bilgisi yazdıracaktır. Örneğin:
Action section
action
bölümü, diğer verileri alan ve sonuç değerlerini tablolara kaydeden sözleşmenin ana kodunu açıklar. Örneğin:
Değişkenler
Veri bölümünde bildirilen değişkenler, değişken adının ardından $
sembolü ile diğer sözleşme bölümlerine iletilir. $
sembolü, bu sözleşmenin ve bu sözleşmenin iç içe olduğu tüm sözleşmelerin global değişkenleri olarak kabul edilen veri bölümünde olmayan diğer değişkenleri bildirmek için de kullanılabilir.
Önceden tanımlanmış değişkenler, sözleşme olarak adlandırılan işlem verilerini içeren sözleşmelerde kullanılabilir:
$time
- işlem timestamp; $ecosystem_id
- ekosistem ID; $block
- İşlemi içeren bloğun ID'si; $key_id
- cari işlemi imzalayan hesabın adresi; $type
- sanal makinede sözleşme kimliği; $block_key_id
- bloğu oluşturan düğümün hesap adresi; $block_time
- blok oluşturma zaman damgası; $original_contract
- başlangıçta işlemi işleyen sözleşmenin adı. Değişken boş bir dize ise, sözleşmenin işlem doğrulaması sırasında çağrıldığı anlamına gelir. Sözleşmenin başka bir sözleşme tarafından mı yoksa doğrudan işlem tarafından mı çağrıldığını kontrol etmek için $original_contract ve $this_contract değerlerini karşılaştırmanız gerekir. Bu, sözleşmenin eşit olmaları durumunda işlem tarafından çağrıldığı anlamına gelir; $this_contract
- şu anda yürütülmekte olan sözleşmenin adı; $guest_key
- misafir hesabı adresi; $stack
- yürütülen tüm sözleşmeleri içeren bir dizi veri türü içeren sözleşme dizisi yığını. Dizinin ilk öğesi, şu anda yürütülmekte olan sözleşmenin adını temsil ederken, son öğe işlemi ilk olarak işleyen sözleşmenin adını temsil eder; $node_position
- bloğun bulunduğu doğrulama düğümü dizisinin dizin numarası; $txhash
- işlem karması; $contract
- mevcut sözleşme yapısı dizisi;
Önceden tanımlanmış değişkenlere yalnızca sözleşmelerde değil, uygulama öğelerinin erişim izin koşullarını tanımlayan izin alanlarında da erişilebilir. İzin alanlarında kullanıldığında, blok bilgileri için önceden tanımlanmış değişkenler her zaman sıfıra eşittir, örneğin: $time
, $block
, vb.
Sözleşmenin dönüş sonucuyla önceden tanımlanmış bir $result
değişkeni olarak atanır.
İç İçe Sözleşmeler
Sözleşmeleri, sözleşmenin koşullar ve eylem bölümlerine yerleştirebilirsiniz. İç içe sözleşmeler doğrudan çağrılabilir ve sözleşme parametreleri, sözleşme adından sonra parantez içinde belirtilir, örneğin, @1NameContract(Params)
. CallContract işleviyle iç içe sözleşmeleri de çağırabilirsiniz.
Dosya Yükleme
multipart/form-data
formatında bir form kullanarak dosya yükleme için, sözleşmenin veri tipi file
olmalıdır.
Dosyaları depolamak için UploadBinary sözleşmesi kullanılır.Sayfa düzenleyicideki Logicor dil işlevi Binary ile dosya indirme bağlantısını alabilirisiniz.
Sözleşme dilinde JSON alan türü olarak belirtilebilir. Giriş alanını işlemek için columnname->fieldname söz dizimini kullanabilirsiniz. Elde edilen değer columnname.fieldname içine kaydedilir. Yukarıdaki sözdizimi, DBFind işlevinin Columns,One,Where bölümünde kullanılabilir.
Tarih ve saat işlemleri içeren sorgular
Sözleşme dili işlevleriyle tarih ve saati doğrudan sorgulayıp güncelleyemezsiniz ancak aşağıdaki örnekte olduğu gibi Where deyiminde PostgreSQL işlevlerini ve özelliklerini kullanabilirsiniz.Örneğin, tarih_sütun alanını geçerli saatle karşılaştırmanız gerekir. tarih_sütun bir zaman damgası türüyse, ifade date_column <NOW()
; olmalıdır; tarih_sütun bir Unix türüyse, ifade to_timestamp(date_column)> NOW()
olmalıdır.
Tarih ve saati SQL formatında işlemek için aşağıdaki "needle" işlevi kullanılır:
Needle sözleşme dili
Sözleşme dili, veri algoritması işleme ve veritabanı işlemlerini gerçekleştirebilen bir dizi fonksiyon, operatör ve yapı içerir.
Sözleşme düzenleme izni false
olarak ayarlanmazsa sözleşme içeriği değiştirilebilir. Sözleşme değişikliklerinin tam geçmişi, Weaver'da bulunan blok zincirinde saklanır.
Blok zincirindeki veri işlemleri, sözleşmenin en son versiyonuna uygun olarak yürütülür.
Temel elemanlar ve yapı
Veri türleri ve değişkenler
Her değişken için veri tipi tanımlanmalıdır. Normalde, veri türleri otomatik olarak dönüştürülür. Aşağıdaki veri türleri kullanılabilir:
bool
- Boolean, true
or false
; bytes
- a byte format; Int
- a 64-bit integer; Array
- an array of any type; map
- an object array; money
- a big integer; float
- a 64-bit float number; string
- a string must be defined with double quotes or escape format: "This is a string" or `This is a string`; file
- an object array:
Name
- file name, string
type; MimeType
- mime-type file, string
type; Body
- file content, bytes
type.
Değişkenlerin, içindekin ve sözleşmelerin tüm içeriği büyük/küçük harfe duyarlıdır (MyFunc myFunc farklı reklamlardır).
Bir değişken bildirmek için var anahtar sözcüğünü, ardından değişkenin adını ve türünü kullanın. Parantez içinde belirtilen değişkenler aynı parantez çiftinde kullanılmalıdır.
Bildirilen herhangi bir değişkenin varsayılan değeri sıfırdır: bool türünün sıfır değeri false, tüm sayısal türlerin sıfır değeri 0 ve dizeler için sıfır değeri, boş dizeler. Değişken bildirimine bir örnek:
Dizi
Sözleşme dili iki dizi türünü destekler:
Array
- 0'dan başlayan dizine sahip bir dizi; map
- bir dizi nesnesi.
Dizi öğelerini tahsis ederken ve alırken, dizin köşeli parantez içinde yerleştirilmelidir. Dizide birden çok dizin desteklenmez ve dizi öğeleri myarr[i][j] olarak değerlendirilemez.
[]
içinde öğeleri belirterek dizi türünde diziler de tanımlayabilirsiniz. Harita türü arrays
için lütfen {}
kullanın.
Bu tür bir başlatmayı ifadelerde kullanabilirsiniz. Örneğin, fonksiyon parametrelerinde kullanın.
Bir dizi nesne için bir anahtar belirtmelisiniz. Anahtar, çift tırnak (""
) içinde dizeler olarak belirtilir. Anahtar adı harfler, sayılar ve alt çizgilerle sınırlıysa çift tırnak işaretlerini atlayabilirsiniz.
Bir dizi, dizeler, sayılar, herhangi bir türdeki değişken adları ve $
sembolüyle değişken adları içerebilir. İç içe dizileri destekler. Değer olarak farklı haritalar veya diziler belirleyebilirsiniz.
İfadeler dizi öğeleri olarak kullanılamaz. İfade sonucunu saklamak için bir değişken kullanın ve bu değişkeni bir dizi öğesi olarak belirtin.
If ve While ifadeleri
Sözleşme dili, sözleşmelerde ve işlevlerde kullanılabilen standart if koşullu ifadeleri ve while döngülerini destekler. Bu ifadeler iç içe yerleştirilebilir.
if ve while'dan sonra bir koşullu ifade gelmelidir. Koşullu ifade bir sayı döndürürse, değeri 0 olduğunda yanlış olarak kabul edilir.
val == 0, !val'e eşittir, val != 0, val'e eşittir. if ifadesi bir else kod bloğuna sahip olabilir ve else, if koşullu ifadesi yanlış olduğunda yürütülür.
Aşağıdaki karşılaştırma operatörleri koşullu ifadelerde kullanılabilir: <, >, >=, <=, ==, !=, ||, &&
while döngüsünün koşullu ifadesi doğru olduğunda kod bloğu yürütülür. break, kod bloğunun döngüsünü sonlandırmak anlamına gelir. Bir döngüyü baştan başlatmak istiyorsanız, devam'ı kullanın.
Needle, koşullu ifadelere ek olarak standart aritmetik işlemleri de destekler: +
, -
, *
, /
.
Dize ve bayt türlerinin değişkenleri koşullu bir ifade olarak kullanılabilir. Türün uzunluğu sıfırdan büyükse koşul doğrudur, aksi takdirde yanlıştır.
Fonksiyonlar
İşlevler, bir sözleşmenin data section tarafından alınan veriler üzerinde bazı işlemler gerçekleştirebilir: veritabanından veri okuma ve yazma, değer türünü dönüştürme ve sözleşmeler arasındaki etkileşimi oluşturma.
Fonksiyon atamaları
Bir işlevi bildirmek için func anahtar sözcüğünü kullanın, ardından ad ve ona iletilen parametrelerin listesi ve türleri. Tüm parametreler parantez içine alınır ve virgülle ayrılır. Parantezlerden sonra fonksiyonun döndürdüğü değerin veri tipi bildirilmelidir. Fonksiyon gövdesi parantez içine alınmalıdır. Fonksiyonun parametresi yoksa, parantezler atlanabilir. Bir fonksiyondan değer döndürmek için return
anahtar sözcüğünü kullanın.
Tüm hata kontrolleri otomatik olarak yapıldığından, fonksiyon hata döndürmez. Herhangi bir fonksiyonda bir hata varsa, sözleşme çalışmasını sonlandıracak ve hata açıklamasını bir pencerede sunacaktır.
Değişken-uzunluklu parametreler
Fonksiyonlar değişken uzunluklu parametreleri tanımlayabilir, değişken uzunluklu parametreleri belirtmek için fonksiyonun son parametre tipi olarak ...
sembolünü bir veri tipi array
ile kullanabilir. Değişken uzunluklu parametreler, parametrenin çağrıda geçirildiği zamandan itibaren tüm değişkenleri içerir. Tüm değişken türleri iletilebilir, ancak veri türlerinin uyumsuzluğundan kaynaklanan çatışmalarla uğraşmanız gerekir.
Opsiyonel parametreler
Bir fonksiyonun birçok parametresi vardır, ancak sadece bazılarına onu çağırırken ihtiyacımız var. Bu durumda, isteğe bağlı parametreleri şu şekilde bildirebilirsiniz: func myfunc(name string).Param1(param string).Param2(param2 int) {...}
, ardından belirtilen parametreleri herhangi bir sırayla çağırabilirsiniz. : myfunc("name").Param2(100)
.
İşlev gövdesinde bu değişkenleri normal şekilde işleyebilirsiniz. Belirtilen isteğe bağlı parametre çağrılmazsa, varsayılan değerleri sıfırdır. Değişken uzunluklu bir parametre belirtmek için de ... kullanabilirsiniz: func DBFind(table string).Where(request string, params ...)
ve sonra onu çağırın: DBFind("mytable").Where({" id": $myid, "type": 2})
Needle fonksiyonlarının sınıflandırılması
Veritabanından değerlerin alınması:
Tablolardaki verileri güncelleme:
Dizilerle yapılan işlemler:
Sözleşmeli ve izinli işlemler:
Adreslerle yapılan işlemler:
Değişken değerlere sahip işlemler:
Aritmetik işlemler:
JSON ile işlemler:
Dizelerle(strings) işlemler:
Bayt içeren işlemler:
SQL formatında tarih ve saat içeren işlemler:
Platform parametreleri ile işlemler:
Ana CLB düğümleri için işlevler(CLB nodes):
Needle fonksiyonları referansı
AppParam
Returns the value of a specified application parameter (from the application parameter table app_params).
Sözdizimi
App
Uygulama ID.
name
Uygulama parametresi ID.
Ecosystemid
Ekosistem ID.
Örnek
DBFind
Belirtilen parametrelerle belirtilen bir tablodan veri sorgular ve bir dizi nesne haritasından oluşan bir dizi dizisi döndürür.
.Row()
sorgudaki ilk harita öğesini alabilir, .One(column string)
sorguda belirtilen bir sütunun ilk harita öğesini alabilir.
Sözdizimi
table
Tablo adı.
сolumns
Sütunların bir listesini döndürür. Belirtilmezse, tüm sütunlar döndürülür.
Değer, virgülle ayrılmış bir dizi veya dizedir.
where
Sorgu koşulları.
Örnek: .Where({name: "John"})
veya .Where({"id": {"$gte": 4}})
.
Bu parametre, arama kriterlerine sahip bir dizi nesne içermelidir. Dizi iç içe öğeler içerebilir.
Aşağıdaki sözdizimsel yapılar kullanılır:
{"field1": "value1", "field2": "value2"}
Equivalent to field1 = "value1" AND field2 = "value2"
.
{"field1": {"$eq":"value"}}
Equivalent to field = "value"
.
{"field1": {"$neq": "value"}}
Equivalent to field != "value"
.
{"field1: {"$in": [1,2,3]}
Equivalent to field IN (1,2,3)
.
{"field1": {"$nin": [1,2,3]}
Equivalent to field NOT IN (1,2,3).
{"field": {"$lt": 12}}
Equivalent to field <12
.
{"field": {"$lte": 12}}
Equivalent to field <= 12
.
{"field": {"$gt": 12}}
Equivalent to field> 12
.
{"field": {"$gte": 12}}
Equivalent to field >= 12
.
{"$and": [<expr1>, <expr2>, <expr3>]}
Equivalent to expr1 AND expr2 AND expr3
.
{"$or": [<expr1>, <expr2>, <expr3>]}
Equivalent to expr1 OR expr2 OR expr3
.
{field: {"$like": "value"}}
Equivalent to field like'%value%'
(fuzzy search).
{field: {"$begin": "value"}}
Equivalent to field like'value%'
(starts with value
).
{field: {"$end": "value"}}
Equivalent to field like'%value'
(ends with value
).
{field: "$isnull"}
Equivalent to field is null.
Nesne dizilerinin anahtarlarının üzerine yazmadığınızdan emin olun. Örneğin, id>2 ve id<5
ile sorgulamak istiyorsanız, {id:{"$gt": 2}, id:{"$lt": 5}}
kullanamazsınız, çünkü ilk elemanın üzerine ikinci eleman yazılacaktır. Aşağıdaki sorgu yapısını kullanmalısınız:
Id
Kimliğe göre sorgular. Örnek, .WhereId(1).
Order
Sonuç kümesini belirli bir sütuna göre veya varsayılan olarak kimliğe göre sıralamak için kullanılır.
Sıralama için yalnızca bir alan kullanıyorsanız, onu bir dize olarak belirtebilirsiniz. Birden çok alanı sıralamak için bir dizi dize nesnesi belirtmeniz gerekir:
Azalan düzen: {"field": "-1"}
eşittir field desc
.
Artan düzen: {"field": "1"}
eşittir field asc
.
limit
Girişlerin sayısını döndürür. 25, varsayılan olarak. Maksimum sayı 10.000'dir.
Offset
Offset.
Ecosystemid
Ekosistem kimliği. Varsayılan olarak, mevcut ekosistemin tablosu sorgulanır.
Örnek
DBRow
Belirtilen parametrelerle belirtilen bir tablodan veri sorgular. Bir dizi nesne haritasından oluşan bir dizi dizisi döndürür.
Sözdizimi
table
Tablo ismi.
columns
Sütunların bir listesini döndürür. Belirtilmezse, tüm sütunlar döndürülür.
Değer, virgülle ayrılmış bir dizi veya dizedir.
where
Sorgu koşulları.
Örneğin: .Where({name: "John"})
veya .Where({"id": {"$gte": 4}})
.
Daha fazla detay için, burda DBFind.
Id
Kimliğe göre sorgulama. Örneğin, .WhereId(1)
.
Order
Sonuç kümesini belirli bir sütuna göre veya varsayılan olarak kimliğe göre sıralamak için kullanılır.
Daha fazla detay için, burda DBFind.
Ecosystemid
Ekosistem kimliği. Varsayılan olarak, mevcut ekosistemin tablosu sorgulanır.
Örnek
DBSelectMetrics
Bir metriğin toplu verilerini döndürür.
Metrikler, her 100 blok oluşturulduğunda güncellenir. Ve toplanan veriler 1 günlük bir döngüde saklanır.
Sözdizimi
metric
Metrik adı.
ecosystem_pages
Ekosistem sayfalarının sayısı.
Dönüş değeri: anahtar - ekosistem kimliği, değer - ekosistem sayfalarının sayısı.
ecosystem_members
Ekosistem üyelerinin sayısı.
Dönüş değeri: anahtar - ekosistem kimliği, değer - ekosistem üyelerinin sayısı.
ecosystem_tx
Ekosistem işlemlerinin sayısı.
Dönüş değeri: anahtar - ekosistem kimliği, değer - ekosistem işlemlerinin sayısı.
timeInterval
Metrik verilerini toplamak için zaman aralığı. Örneğin: 1 day
, 30 days
.
aggregateFunc
Aggregate fonksiyonu. Örneğin, max
, min
, avg
.
Örnek
EcosysParam
Returns the value of a specified parameter in the ecosystem parameters table parameters.
Sözdizimi
Örnek
GetHistory
Belirtilen bir tablodaki girişlerde yapılan değişikliklerin geçmişini döndürür.
Sözdizimi
table
Tablo adı.
Id
Giriş ID.
Geri dönüş değeri
Tablolardaki girişlerde yapılan değişikliklerin geçmişini belirten map türünde bir dizi nesne döndürür.
Her dizi, sonraki değişikliği yapmadan önce bir kaydın alanlarını içerir.
Dizi, en son değişikliklerin sırasına göre sıralanır.
Örnek
GetHistoryRow
Belirtilen bir tabloda belirtilen bir girdinin değişiklik geçmişinden tek bir anlık görüntü döndürür.
Sözdizimi
GetColumnType
Belirtilen tablodaki belirtilen alanın veri türünü döndürür.
Sözdizimi
table
Tablo adı.
column
Alan adı.
Return value
Değerler döndürülebilir: text, varchar, number, money, double, bytes, json, datetime, double
.
Örnek
GetDataFromXLSX
XLSX elektronik tablolarından verileri döndürür.
Sözdizimi
binId
İkili tablo ikili dosyasında XLSX biçiminde kimlik.
line
Varsayılan olarak 0'dan başlayan başlangıç satırı numarası.
count
Döndürülmesi gereken satır sayısı.
sheet
Liste numarası, varsayılan olarak 1'den başlar.
Örnek
GetRowsCountXLSX
Belirtilen bir XLSX dosyasındaki satır sayısını döndürür.
Sözdizimi
Örnek
LangRes
İki karakterli bir kod olarak belirtilen dil dili için ad etiketine sahip çok dilli bir kaynak döndürür, örneğin: en
, tr
. Seçilen bir dil için dil yoksa, en
etiketinin dil kaynağı döndürülür.
Sözdizimi
label
Dil kaynağı adı.
lang
İki karakterli dil kodu.
Örnek
GetBlock
Belirtilen bir blok hakkında ilgili bilgileri döndürür.
Sözdizimi
Return value
Bir dizi nesne döndür:
Örnek
DBInsert
Belirtilen tabloya bir girdi ekler ve girdi kimliğini döndürür.
Sözdizimi
Örnek
DBUpdate
Belirtilen bir tabloda belirtilen giriş kimliğinin sütun değerini değiştirir. Giriş kimliği tabloda yoksa bir hata döndürülür.
Sözdizimi
Örnek
DBUpdateExt
Belirtilen tablodaki sorgu koşuluyla eşleşen bir sütunun değerini değiştirir.
Sözdizimi
tblname
Tablo adı.
where
Sorgo koşulları
Daha fazla detay için, burada DBFind.
params
Anahtarların alan adları ve değerlerin değişikliklerden sonra yeni değerler olduğu bir nesne dizisi.
Örnek
DelColumn
Belirtilen tabloda kaydı olmayan bir alanı silin.
Sözdizimi
tblname
Tablo adı.
column
Silinecek alan.
DelTable
Hiçbir kaydı olmayan belirli bir tabloyu siler.
Sözdizimi
Örnek
Ekle
Src dizisine herhangi bir türde val ekler.
Sözdizimi
Append(src array, val anyType) array
src
Orjinal dizi.
val
Eklenecek değer.
Örnek
Katılmak
"in dizisinin" öğelerini belirtilen bir ayırıcıyla bir dizede birleştirir.
Sözdizimi
İçinde
Array ismi.
sep
Ayırıcı.
Örnek
Bölmek
"in dizesini" öğelere bölmek ve bunları bir diziye yerleştirmek için ayırıcıyı kullanır.
Sözdizimi
İçinde
Metinsel.
sep
Ayırıcı.
Örnek
Len
Belirtilen dizideki öğelerin sayısını döndürür.
Sözdizimi
Örnek
Row
Bu durumda list parametresi belirtilmemelidir. Dizi listesindeki ilk nesne dizisini döndürün. Liste boşsa, boş bir sonuç döndürülür. Bu işlev çoğunlukla DBFind işleviyle birlikte kullanılır. Bu işlevi kullanırken, parametreleri belirtemezsiniz.
Sözdizimi
Örnek
One
Dizi listesindeki ilk nesne dizisinin alan değerini döndürür. Liste dizisi boşsa, nil döndürülür. Çoğunlukla DBFind işleviyle birlikte kullanılır. Bu işlevi kullanırken, parametreleri belirtemezsiniz.
Sözdizimi
DBFind işlevi tarafından döndürülen nesne dizisi.
GetMapKeys
Nesne dizisindeki anahtar diziyi döndürür.
Sözdizimi
Örnek
SortedKeys
Nesne dizisinde sıralanmış bir anahtar dizi döndürür.
Sözdizimi
Örnek
CallContract
Belirtilen adla sözleşmeyi çağırır. Sözleşmedeki veri bölümünün tüm parametreleri bir nesne dizisine dahil edilmelidir. Bu işlev, belirtilen bir sözleşme tarafından $result değişkenine atanan değeri döndürür.
Sözdizimi
Örnek
ContractAccess
Yürütülmekte olan sözleşmenin adının parametrelerde listelenen adlardan biriyle eşleşip eşleşmediğini kontrol eder. Genellikle tablolara sözleşme erişimini kontrol etmek için kullanılır. Tablo alanlarını düzenlerken veya tablonun izinler bölümünde yeni sütun alanları eklerken, lütfen bu işlevi izin alanlarında belirtin.
Sözdizimi
Örnek
ContractConditions
Sözleşmedeki koşullar bölümünü belirtilen adla çağırır.
Bu tür sözleşmeler için veri bölümü boş olmalıdır. Koşullar bölümü hatasız yürütülürse true döner. Yürütme sırasında bir hata varsa, hata nedeniyle ana sözleşme de feshedilecektir. Bu işlev genellikle sözleşmenin tablolara erişimini kontrol etmek için kullanılır ve sistem tablolarını düzenlerken izin alanlarında çağrılabilir.
Sözdizimi
Örnek
EvalCondition
Sözleşme tablo adı tablosundan bir 'ad' alanı olan kayıttaki koşul alanının değerini alır ve koşul alanı değerinin koşullarını kontrol eder.
Sözdizimi
Örnek
GetContractById
Sözleşme kimliğine göre sözleşme adını döndürür. Sözleşme bulunamazsa boş bir dize döndürülür.
Sözdizimi
Örnek
GetContractByName
Bu işlev, sözleşme kimliğini sözleşme adına göre döndürür. Sözleşme bulunamazsa, sıfır döndürülür.
Sözdizimi
Örnek
RoleAccess
Sözleşme arayanın rol kimliğinin parametrede belirtilen kimliklerden biriyle eşleşip eşleşmediğini kontrol eder.
Tablolara ve diğer verilere sözleşme erişimini kontrol etmek için bu işlevi kullanabilirsiniz.
Sözdizimi
Örnek
İşlem Bilgileri
İşlemleri belirtilen hash değerine göre sorgular ve yürütülen sözleşme ve parametreleri hakkında bilgi verir.
Sözdizimi
Return value
Örnek
Throw
Özel durum(exception) türünde bir hata oluşturur.
Sözdizimi
ErrorId
Hata tanımlayıcısı.
ErrDescription
Hata tanımlaması.
Return value
Örnek
ValidateCondition
Koşul parametresi tarafından belirtilen koşulları derlemeye çalışır. Derleme işlemi sırasında bir hata oluşursa hata oluşur ve çağrılan sözleşme sonlandırılır. Bu işlev, koşullu biçimin doğruluğunu kontrol etmek için tasarlanmıştır.
Sözdizimi
condition
Doğrulanması gereken koşullu biçim.
state
Ekosistem kimliği. Global koşulu kontrol ederseniz, lütfen 0 olarak belirtin.
Örnek
AddressToId
Cüzdan adresine göre ilgili hesap adresini döndürür. Geçersiz bir adres belirtilirse, '0' döndürülür.
Sözdizimi
Örnek
IdToAddress
Hesap adresine göre ilgili cüzdan adresini döndürür. Geçersiz bir adres belirtilirse, geçersiz adres 'invalid' döndürülür.
Sözdizimi
Örnek
PubToID
Hesap adresi, genel anahtar tarafından onaltılık biçimde döndürülür.
Sözdizimi
Örnek
DecodeBase64
Base64 biçimini belirterek bir dize döndürür
Sözdizimi
Input
Base64 biçiminde dize.
Örnek
EncodeBase64
Bir dize belirterek base64 biçiminde bir dize döndürür.
Sözdizimi
Örnek
Float
Bir tamsayıyı veya dizeyi bir kayan sayıya dönüştürür.
Sözdizimi
val
Bir tamsayı veya dize.
Örnek
HexToBytes
Onaltılık biçimdeki bir dizeyi bayt türü baytlara dönüştürür.
Sözdizimi
Örnek
exp / 10 ^ basamağının dize değerini döndürür.
Sözdizimi
Example
Random
Sözdizimi
Örnek
Int
Dize biçimindeki bir değeri tam sayıya dönüştürür.
Sözdizimi
Örnek
Hash
Sözdizimi
Örnek
Sha256
Sözdizimi
Örnek
Str
Bir tamsayı int veya kayan noktalı sayıyı bir dizgeye dönüştürür.
Sözdizimi
Örnek
JSONEncode
Bir sayıyı, dizeyi veya diziyi JSON biçiminde bir dizeye dönüştürür.
Sözdizimi
Örnek
JSONEncodeIndent
Bir sayıyı, dizeyi veya diziyi JSON biçiminde bir dizeye dönüştürmek için belirtilen girintiyi kullanır.
Sözdizimi
Örnek
JSONDecode
JSON biçimindeki bir dizeyi sayı, dize veya diziye dönüştürür.
Sözdizimi
Örnek
HasPrefix
Dizenin belirtilen bir dizeyle başlayıp başlamadığını kontrol eder.
Sözdizimi
s
Söz dizisi.
prefix
Kontrol edilecek ön ek.
Return value
Dize belirtilen bir dize ile başlıyorsa, true
döndürülür.
Örnek
Contains
Dizenin belirtilen bir alt dize içerip içermediğini kontrol eder.
Sözdizimi
s
Söz dizisi.
substr
Bir alt dize.
Return value
Dize alt dizeyi içeriyorsa, true
değerini döndürür.
Örnek
Replace
Dizedeki eski (eski dize) yeni (yeni dize) ile değiştirir.
Sözdizimi
s
Orjinal dize
Old
Değiştirilecek alt dize.
new
Yeni dize.
Örnek
Size
Belirtilen dizedeki bayt sayısını döndürür.
Sözdizimi
Örnek
Sprintf
Bu işlev, belirtilen şablon ve parametreleri kullanarak bir dize oluşturur.
Kullanılabilir joker karakterler:
%d
(integer) %s
(string) %f
(float) %v
(any type)
Sözdizimi
Örnek
Substr
Ofset uzaklığından başlayarak (varsayılan olarak 0'dan hesaplanır) belirtilen bir dizeden elde edilen alt dizeyi döndürür ve maksimum uzunluk uzunlukla sınırlıdır.
Uzaklık veya uzunluk sıfırdan küçükse veya uzaklık uzunluktan büyükse boş bir dize döndürülür.
Ofset ve uzunluğun toplamı dize boyutundan büyükse, alt dize, ofsetten başlayarak dizenin sonuna kadar döndürülür.
Sözdizimi
val
Söz dizisi.
Offset
Offset.
length
Örnek
ToLower
Belirtilen bir dizeyi küçük harfle döndürür.
Sözdizimi
Örnek
ToUpper
Belirtilen bir dizeyi büyük harfle döndürür.
Sözdizimi
Örnek
TrimSpace
Belirtilen bir dizenin başındaki ve sonundaki boşlukları, sekmeleri ve yeni satırları siler.
Sözdizimi
Örnek
Floor
Belirtilen sayıdan, kayan sayıdan ve dizeden küçük veya ona eşit en büyük tamsayı değerini döndürür.
Sözdizimi
Örnek
Log
Belirtilen sayının, kayan sayının ve dizenin doğal logaritmasını döndürür.
Sözdizimi
Örnek
Log10
Belirtilen sayının, kayan sayının ve dizenin 10 tabanlı logaritmasını döndürür.
Sözdizimi
Örnek
Pow
Belirtilen tabanı belirtilen güce (xy) döndürür.
Sözdizimi
Örnek
Round
En yakın tam sayıya yuvarlanmış belirtilen bir sayının değerini döndürür.
Sözdizimi
Örnek
Sqrt
Belirtilen sayının karekökünü döndürür.
Örnek
StringToBytes
Bir dizeyi baytlara dönüştürür.
Sözdizimi
Örnek
BytesToString
Baytları dizeye dönüştürür.
Sözdizimi
Example
SysParamString
Belirtilen platform parametresinin değerini döndürür.
Sözdizimi
Örnek
SysParamInt
Belirtilen platform parametresinin değerini sayı biçiminde döndürür.
Sözdizimi
Örnek
DBUpdateSysParam
Bir platform parametresinin değerini ve koşullarını günceller. Değeri veya koşulları değiştirmeniz gerekmiyorsa, lütfen ilgili parametrede boş bir dize belirtin.
Sözdizimi
name
Parametre adı.
value
conditions
Örnek
UpdateNotifications
Veritabanından belirtilen bir anahtarın bildirim listesini alır ve elde edilen bildirimi Centrifugo'ya gönderir.
Sözdizimi
Örnek
UpdateRolesNotifications
Veritabanında belirtilen bir rol kimliğinin tüm hesap adreslerinin bildirim listesini alır ve elde edilen bildirimi Centrifugo'ya gönderir.
Sözdizimi
Örnek
HTTPRequest
Belirtilen adrese HTTP istekleri gönderir.
Not
Bu işlev yalnızca CLB sözleşmelerinde kullanılabilir.
Sözdizimi
Url
Talebin gönderileceği adres.
method
İstek türü (GET veya POST).
heads
pars
İstenen parametreler.
Örnek
HTTPPostJSON
Bu işlev, HTTPRequest işlevine benzer, ancak bir POST isteği gönderir ve istek parametreleri dizelerdir.
Not
Bu işlev yalnızca CLB sözleşmelerinde kullanılabilir.
Sözdizimi
Url
Talebin gönderileceği adres.
heads
Bir dizi istek başlığı, nesne.
pars
Parametreleri bir JSON dizesi olarak isteyin.
Örnek
BlockTime
Bloğun oluşturma süresini SQL biçiminde döndürür.
Sözdizimi
Örnek
DateTime
Unixtime zaman damgasını YYYY-AA-GG SS:MI:SS biçiminde bir dizeye dönüştürür.
Sözdizimi
Örnek
UnixDateTime
YYYY-AA-GG SS:MI:SS biçimindeki bir dizeyi bir zaman damgası unixtime'a dönüştürür
Sözdizimi
Örnek
CreateOBS
Bir alt CLB oluşturur.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
Örnek
GetOBSList
Alt CLB'lerin listesini döndürür.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
Return value
Anahtarın CLB adı ve değerin işlem durumu olduğu bir nesne dizisi.
RunOBS
CLB'yi çalıştıran bir süreç.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
StopOBS
Belirtilen bir CLB'nin sürecini durdurun.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
RemoveOBS
Belirtilen bir CLB'nin sürecini siler.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
CLB adı.
Yalnızca harf ve rakamlardan oluşabilir ve boşluk simgesi kullanılamaz.
System Contracts
IBax blok zinciri platformu başlatıldığında sistem sözleşmeleri varsayılan olarak oluşturulur. Tüm bu sözleşmeler ilk ekosistemde oluşturuldu. Bu nedenle, onları diğer ekosistemlerden çağırırken tam adlarını belirtmeniz gerekir, örneğin, @1NewContract
.
NewEcosystem
Bu sözleşme yeni bir ekosistem yaratır. Oluşturulan ekosistemin kimliğini elde etmek için txstatus içinde döndürülen dosyalanan sonucu alıntılamalısınız.
Parameters:
- Name string - ekosistemin adı. Daha sonra değiştirilebilir.
EditEcosystemName
Yalnızca ilk ekosistemde bulunan 1_ecosystems tablosundaki ekosistemin adını değiştirir.
Parameters:
- EcosystemID int - ekosistem kimliğinin adını değiştirir;
- NewName string - ekosistemin yeni adı.
NewContract
Mevcut ekosistemde yeni bir sözleşme oluşturur.
Parameters:
- ApplicationId int - yeni bir sözleşmenin ait olduğu uygulama;
- Value dize - sözleşme kaynak kodu. Üst katmanın yalnızca bir sözleşmesi olmalıdır;
- Conditions dize - sözleşmenin koşullarını değiştirir;
- TokenEcosystem int "isteğe bağlı" - ekosistem kimliği. Sözleşme etkinleştirildiğinde işlemler için hangi jetonun kullanılacağını belirler.
EditContract
Mevcut ekosistemdeki sözleşmeyi düzenler.
Parameters:
- Id int - sözleşme kimliği değişti;
- Value "isteğe bağlı" dize - sözleşmenin kaynak kodu;
- Conditions "isteğe bağlı" dize - sözleşmenin koşullarını değiştirir.
BindWallet
Sözleşmeyi mevcut ekosistemdeki cüzdan adresine bağlama. Sözleşmeye bağlandıktan sonra sözleşme yürütme ücreti bu adrese ödenecektir.
Parameters:
- Id int - bağlanacak sözleşme kimliği.
- WalletId "isteğe bağlı" dize - sözleşmeye bağlı cüzdan adresi.
UnbindWallet
Mevcut ekosistemdeki cüzdan adresinden sözleşmenin kaldırılması. Yalnızca sözleşmeye bağlı adresler serbest bırakılabilir. Sözleşmeyi feshettikten sonra sözleşmeyi yürüten kullanıcılar yürütme ücretini ödeyecektir.
Parameters:
- Id int - bağlı olan sözleşmenin kimliği.
NewParameter
Mevcut ekosisteme yeni bir ekosistem parametresi eklendi.
Parameters:
- Name string - parametre adı;
- Value string - parameter değer;
- Conditions string - parametreyi değiştirme koşulları.
EditParameter
Mevcut ekosistemdeki mevcut ekosistem parametrelerini değiştirir.
Parameters:
- Name string - değiştirilecek parametrenin adı;
- Value string - yeni parametre değeri;
- Conditions string - parametreyi değiştirmek için yeni koşullar.
Mevcut ekosisteme yeni bir menü ekler.
Parameters:
- Name string - menu adı;
- Value string - menu kaynak kodu;
- Title string "opsiyonel" - menu başlığı;
- Conditions string - Menüyü değiştirmek için koşullar.
Mevcut ekosistemdeki mevcut menüyü değiştirir.
Parameters:
- Id int - değiştirilecek menü kimliği;
- Value string "optional" - yeni menünün kaynak kodu;
- Title string "optional" - yeni menünün başlığı;
- Conditions string "optional" - menüyü değiştirmek için yeni koşullar.
Kaynak kodu içeriğini mevcut ekosistemdeki mevcut menülere ekler
Parameters:
- Id int - menu ID;
- Value string - kaynak kodu eklenecektir.
NewPage
Mevcut ekosisteme yeni bir sayfa ekler.
Parameters:
Name string - sayfa adı;
Value string - sayfanın kaynak kodu;
Menu string - sayfayla ilişkili menünün adı;
Conditions string - sayfayı değiştirme koşulları;
ValidateCount int "optional" - sayfa doğrulaması için gereken düğüm sayısı. Bu parametre belirtilmezse min_page_validate_count ekosistem parametre değeri kullanılır. Bu parametrenin değeri min_page_validate_count değerinden küçük ve max_page_validate_count değerinden büyük olamaz;
ValidateMode int "optional" - sayfa geçerlilik denetimi modu. Bu parametrenin değeri 0 ise sayfa yüklendiğinde kontrol edilecektir; veya yüklendiğinde kontrol edilir veya bu parametrenin değeri 1 ise sayfadan çıkılır.
EditPage
Mevcut ekosistemdeki mevcut sayfaları değiştirir.
Parameters:
- Id int - Değiştirilecek sayfanın kimliği;
- Value string "optional" - yeni sayfanın kaynak kodu;
- Menu string "optional" - sayfayla ilişkili yeni menünün adı;
- Conditions string "optional" - sayfayı değiştirmek için yeni koşullar;
- ValidateCount int "optional" - sayfa doğrulaması için gereken düğüm sayısı. Bu parametre belirtilmezse min_page_validate_count ekosistem parametre değeri kullanılır. Bu parametrenin değeri min_page_validate_count değerinden küçük ve max_page_validate_count değerinden büyük olamaz;
- ValidateMode int "optional" - sayfa geçerlilik denetimi modu. Bu parametrenin değeri 0 ise sayfa yüklendiğinde kontrol edilecektir; veya yüklendiğinde kontrol edilir veya bu parametrenin değeri 1 ise sayfadan çıkılır.
AppendPage
Kaynak içeriği mevcut ekosistemdeki mevcut sayfalara ekler.
Parameters:
- Id int - Değiştirilecek sayfanın kimliği;
- Value string - eklenecek kaynak kodu.
NewBlock
Mevcut ekosisteme bir sayfa modülü ekler.
Parameters:
- Name string - modülün adı;
- Value string - modülün kaynak kodları;
- Conditions string - modülü değiştirme koşulları.
EditBlock
Mevcut ekosistemdeki mevcut sayfa modüllerini değiştirir.
Parameters:
- Id int - değiştirilecek modül kimliği;
- Value string - yeni modülün kaynak kodu;
- Conditions string - modülü değiştirmek için yeni koşullar.e.
NewTable
Mevcut ekosisteme yeni bir tablo ekler.
Parameters:
- ApplicationId int - ilişkili tablonun uygulama kimliği;
- Name string - yeni tablonun adı;
- Columns string - JSON formatında alan dizisi
[{"name":"...", "type":"...","index": "0", "conditions":".. ."},...]
, where
name - alan adı, sadece latin harfleri;
type - veri tipi varchar,bytea,number,datetime,money,text,double,character
;
index -birincil olmayan anahtar alanı 0
, birincil anahtar 1
;
conditions - alan verilerini değiştirme koşulları ve erişim izinleri JSON formatında belirtilmelidir. "{"update":"ContractConditions(MainCondition)", "read":"ContractConditions(MainCondition)"}
;
- Permissions string - JSON formatında erişim izinleri
{"insert": "...", "new_column": "...", "update": "...", "read": ".. ."}
.
- insert - giriş ekleme izni;
- new_column - yeni bir sütun ekleme izni;
- update - giriş verilerini değiştirme izni;
- read - giriş verilerini okuma izni.
EditTable
Mevcut ekosistemdeki bir tablonun erişim izinlerini değiştirir.
Parameters:
- Name string - tablonun adı;
- InsertPerm string - tabloya giriş ekleme izni;
- UpdatePerm string - tablodaki girişleri güncelleme izni;
- ReadPerm string - tablodaki girdileri okuma izni;
- NewColumnPerm string - yeni bir sütun oluşturma izni;
NewColumn
Mevcut ekosistem tablosuna yeni bir alan ekler.
Parameters:
- TableName string - tablo adı;
- Name string - Latin karakterleriyle alan adı;
- Type string - veri tipi
varchar,bytea,number,money,datetime,text,double,character
; - UpdatePerm string -sütundaki değeri değiştirme izni;
- ReadPerm string - sütundaki değeri okuma izni.
EditColumn
Geçerli ekosistemde belirtilen bir tablo alanının iznini değiştirir.
Parameters:
- TableName string - tablo adı;
- Name string - Latin karakterleriyle değiştirilecek alan adı;
- UpdatePerm string - sütundaki değeri değiştirmek için yeni izin;
- ReadPerm string - sütundaki değeri okumak için yeni izin.
NewLang
Mevcut ekosisteme dil kaynakları ekler ve bunu yapma izni, ekosistem parametrelerinin change_language parametresinde ayarlanır.
Parameters:
- Name string - Latin karakterleriyle dil kaynaklarının adı;
- Trans string - anahtar olarak iki karakterlik bir dil kodu ve değer olarak çevrilmiş dize ile JSON biçiminde dize. Örneğin,
{"en": "English text", "tr": "türkçe text"}
.
EditLang
Geçerli ekosistemdeki dil kaynaklarını değiştirir ve bunu yapma izni, ekosistem parametresinin change_language parametresinde ayarlanır.
Parameters:
- Id int - dil kaynakları ID.
- Trans - anahtar olarak iki karakterlik bir dil kodu ve değer olarak çevrilmiş dize ile JSON biçiminde dize. Örneğin,
{"en": "English text", "tr": "türkçe text"}
.
Import
Bir uygulamayı mevcut ekosisteme aktarır ve ImportUpload sözleşmesinden yüklenen verileri içe aktarır.
Parameters:
- Data string - ekosistem tarafından dışa aktarılan bir dosyadan gelen metin biçiminde içe aktarılan veriler.
ImportUpload
Sonraki içe aktarma için geçerli ekosistemin buffer_data tablosuna harici bir uygulama dosyası yükler.
Parameters:
- InputFile file - mevcut ekosistemin buffer_data tablosuna yazılmış bir dosya.
NewAppParam
Mevcut ekosisteme yeni uygulama parametreleri ekler.
Parameters:
- ApplicationId int - uygulama ID;
- Name string - parametre adı;
- Value string - parametre değeri;
- Conditions string - parametreyi değiştirme izni.
EditAppParam
Mevcut ekosistemdeki mevcut uygulama parametrelerini değiştirir.
Parameters:
- Id int - uygulama parametre ID;
- Value string "optional" - yeni parametre değeri;
- Conditions string "optional" - parametreyi değiştirmek için yeni izinler.
NewDelayedContract
Gecikmeli sözleşme zamanlayıcı arka plan programına yeni bir görev ekler.
Gecikmeli sözleşmeler planlayıcısı, o anda oluşturulan bloğun gerektirdiği sözleşmeleri çalıştırır.
Parameters:
- Contract string - sözleşme adı;
- EveryBlock int - sözleşme, bu kadar blok miktarında yürütülecektir;
- Koşullar dizisi - görevi değiştirme izni;
- BlockID int "optional" - sözleşmenin yürütülmesi gereken blok kimliği. Belirtilmezse, "geçerli blok kimliği" + EveryBlock eklenerek otomatik olarak hesaplanacaktır;
- Limit int "optional" - maksimum görev yürütme sayısı. Belirtilmezse, görev sınırsız bir süre için yürütülecektir.
EditDelayedContract
Gecikmeli sözleşmeler zamanlayıcı arka plan programında bir görevi değiştirir.
Parameters:
- Id int - task ID;
- Contract string - sözleşme adı;
- EveryBlock int - sözleşme, bu kadar blok miktarında yürütülecektir;
- Conditions string - görevi değiştirme izni;
- BlockID int "optional" - sözleşmenin yürütülmesi gereken blok kimliği. Belirtilmezse, "geçerli blok kimliği" + EveryBlock eklenerek otomatik olarak hesaplanacaktır;
- Limit int "optional" - maksimum görev yürütme sayısı. Belirtilmezse, görev sınırsız bir süre için yürütülecektir.
- Deleted int "optional" -Görev değiştirme.
1
değeri görevi devre dışı bırakacaktır. 0
değeri, görevi etkinleştirecektir.
UploadBinary
X_binaries tablosunda statik bir dosya ekler veya üzerine yazar. HTTP API aracılığıyla bir sözleşmeyi çağırırken, istek 'multipart/form-data' formatında olmalıdır; DataMimeType parametresi, form verileriyle birlikte kullanılacaktır.
Parameters:
- Name string - statik dosyanın adı;
- Data bytes - statik dosyanın içeriği;
- DataMimeType string "optional" - mime tipi formatta statik bir dosya;
- ApplicationId int - X_binaries tablosuyla ilişkili uygulama kimliği.
DataMimeType parametresi iletilmezse, varsayılan olarak application/octet-stream
formatı kullanılır.