Akıllı kontratlar
- Kontrat yapısı
- Değişkenler
- İç İçe Sözleşmeler
- Dosya Yükleme
- Json formatında sorgular
- Tarih ve saat işlemleri içeren sorgular
- Needle sözleşme dili
- Fonksiyonlar
- Needle fonksiyonlarının sınıflandırılması
- Needle fonksiyonları referansı
- AppParam
- DBFind
- DBRow
- DBSelectMetrics
- EcosysParam
- GetHistory
- GetHistoryRow
- GetColumnType
- GetDataFromXLSX
- GetRowsCountXLSX
- LangRes
- GetBlock
- DBInsert
- DBUpdate
- DBUpdateExt
- DelColumn
- DelTable
- Ekle
- Katılmak
- Bölmek
- Len
- Row
- One
- GetMapKeys
- SortedKeys
- CallContract
- ContractAccess
- ContractConditions
- EvalCondition
- GetContractById
- GetContractByName
- RoleAccess
- İşlem Bilgileri
- Throw
- ValidateCondition
- AddressToId
- IdToAddress
- PubToID
- DecodeBase64
- EncodeBase64
- Float
- HexToBytes
- FormatMoney
- Random
- Int
- Hash
- Sha256
- Str
- JSONEncode
- JSONEncodeIndent
- JSONDecode
- HasPrefix
- Contains
- Replace
- Size
- Sprintf
- Substr
- ToLower
- ToUpper
- TrimSpace
- Floor
- Log
- Log10
- Pow
- Round
- Sqrt
- StringToBytes
- BytesToString
- SysParamString
- SysParamInt
- DBUpdateSysParam
- UpdateNotifications
- UpdateRolesNotifications
- HTTPRequest
- HTTPPostJSON
- BlockTime
- DateTime
- UnixDateTime
- CreateOBS
- GetOBSList
- RunOBS
- StopOBS
- RemoveOBS
- System Contracts
- NewEcosystem
- EditEcosystemName
- NewContract
- EditContract
- BindWallet
- UnbindWallet
- NewParameter
- EditParameter
- NewMenu
- EditMenu
- AppendMenu
- NewPage
- EditPage
- AppendPage
- NewBlock
- EditBlock
- NewTable
- EditTable
- NewColumn
- EditColumn
- NewLang
- EditLang
- Import
- ImportUpload
- NewAppParam
- EditAppParam
- NewDelayedContract
- EditDelayedContract
- UploadBinary
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.
contract MyContract {
data {
FromId int
ToId int
Amount money
}
func conditions {
...
}
func action {
...
}
}
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.
contract my {
data {
Name string
RequestId int
Photo file "optional"
Amount money
Private bytes
}
...
}
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:
if fuel == 0 {
error "fuel cannot be zero!"
}
if money < limit {
warning Sprintf("You don't have enough money: %v <%v", money, limit)
}
if idexist > 0 {
info "You have already been registered"
}
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:
action {
DBUpdate("keys", $key_id, {"-amount": $amount})
DBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})
}
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 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.
contract my {
data {
Name string
Amount money
}
func conditions {
if $Amount <= 0 {
error "Amount cannot be 0"
}
$ownerId = 1232
}
func action {
var amount money
amount = $Amount - 10
DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})
DBUpdate("mytable2", $ownerId, {amount: 10})
}
}
İç İç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.
contract Upload {
data {
File file
}
...
}
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.
Json formatında sorgular
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.
var ret map
var val str
var list array
ret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()
val = ret["doc.ind"]
val = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")
list = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")
val = DBFind("mytable").WhereId($Id).One("doc->check")
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.
Where("to_timestamp(date_column)> NOW()")
Where("date_column <NOW() - 30 * interval '1 day'")
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
orfalse
;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:
func myfunc( val int) int {
var mystr1 mystr2 string, mypar int
var checked bool
...
if checked {
var temp int
...
}
}
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.
var myarr array
var mymap map
var s string
myarr[0] = 100
myarr[1] = "This is a line"
mymap["value"] = 777
mymap["param"] = "Parameter"
s = Sprintf("%v, %v, %v", myarr[0] + mymap["value"], myarr[1], mymap["param"])
// s = 877, This is a line, Parameter
[]
içinde öğeleri belirterek dizi türünde diziler de tanımlayabilirsiniz.
Harita türü arrays
için lütfen {}
kullanın.
var my map
my={"key1": "value1", key2: i, "key3": $Name}
var mya array
mya=["value1", {key2: i}, $Name]
Bu tür bir başlatmayı ifadelerde kullanabilirsiniz. Örneğin, fonksiyon parametrelerinde kullanın.
DBFind...Where({id: 1})
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.
{key1: "value1", key2: "value2"}
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.
[1+2, myfunc(), name["param"]] // don't do this
[1, 3.4, mystr, "string", $ext, myarr, mymap, {"ids": [1,2, i], company: {"Name": "MyCompany"}} ] // this is ok
var val string
val = my["param"]
MyFunc({key: val, sub: {name: "My name", "color": "Red"}})
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:
<, >, >=, <=, ==, !=, ||, &&
if val> 10 || id != $block_key_id {
...
} else {
...
}
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.
var i int
while true {
if i > 100 {
break
}
...
if i == 50 {
continue
}
...
i = i + 1
}
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.
func myfunc(left int, right int) int {
return left*right + left - right
}
func test int {
return myfunc(10, 30) + myfunc(20, 50)
}
func ooops {
error "Ooops..."
}
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.
func sum(out string, values ...) {
var i, res int
while i <Len(values) {
res = res + values[i]
i = i + 1
}
Println(out, res)
}
func main() {
sum("Sum:", 10, 20, 30, 40)
}
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})
func DBFind(table string).Columns(columns string).Where(format string, tail ...)
.Limit(limit int).Offset(offset int) string {
...
}
func names() string {
...
return DBFind("table").Columns("name").Where({"id": 100}).Limit(1)
}
Needle fonksiyonlarının sınıflandırılması
Veritabanından değerlerin alınması:
AppParam | EcosysParam | GetDataFromXLSX |
DBFind | GetHistory | GetRowsCountXLSX |
DBRow | GetHistoryRow | GetBlock |
DBSelectMetrics | GetColumnType | LangRes |
Tablolardaki verileri güncelleme:
DBInsert | DBUpdateExt | DelTable |
DBUpdate | DelColumn |
Dizilerle yapılan işlemler:
Append | Len | GetMapKeys |
Join | Row | SortedKeys |
Split | One |
Sözleşmeli ve izinli işlemler:
CallContract | GetContractById | TransactionInfo |
ContractAccess | RoleAccess | Throw |
ContractConditions | GetContractByName | ValidateCondition |
EvalCondition |
Adreslerle yapılan işlemler:
AddressToId | IdToAddress | PubToID |
Değişken değerlere sahip işlemler:
DecodeBase64 | FormatMoney | Hash |
EncodeBase64 | Random | Sha256 |
Float | Int | Str |
HexToBytes |
Aritmetik işlemler:
Floor | Log10 | Round |
Log | Pow | Sqrt |
JSON ile işlemler:
JSONEncode | JSONEncodeIndent | JSONDecode |
Dizelerle(strings) işlemler:
HasPrefix | Size | ToLower |
Contains | Sprintf | ToUpper |
Replace | Substr | TrimSpace |
Bayt içeren işlemler:
StringToBytes | BytesToString |
SQL formatında tarih ve saat içeren işlemler:
BlockTime | DateTime | UnixDateTime |
Platform parametreleri ile işlemler:
HTTPRequest | HTTPPostJSON |
Ana CLB düğümleri için işlevler(CLB nodes):
CreateOBS | RunOBS | RemoveOBS |
GetOBSList | StopOBS |
Needle fonksiyonları referansı
AppParam
Returns the value of a specified application parameter (from the application parameter table app_params).
Sözdizimi
AppParam(app int, name string, ecosystemid int) string
-
App
Uygulama ID.
-
name
Uygulama parametresi ID.
-
Ecosystemid
Ekosistem ID.
Örnek
AppParam(1, "app_account", 1)
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
DBFind(table string)
[.Columns(columns array|string)]
[.Where(where map)]
[.WhereId(id int)]
[.Order(order string)]
[.Limit(limit int)]
[.Offset(offset int)]
[.Row()]
[.One(column string)]
[.Ecosystem(ecosystemid int)] array
-
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 tofield1 = "value1" AND field2 = "value2"
. -
{"field1": {"$eq":"value"}}
Equivalent tofield = "value"
. -
{"field1": {"$neq": "value"}}
Equivalent tofield != "value"
. -
{"field1: {"$in": [1,2,3]}
Equivalent tofield IN (1,2,3)
. -
{"field1": {"$nin": [1,2,3]}
Equivalent to field NOT IN (1,2,3). -
{"field": {"$lt": 12}}
Equivalent tofield <12
. -
{"field": {"$lte": 12}}
Equivalent to field <= 12
. -
{"field": {"$gt": 12}}
Equivalent tofield> 12
. -
{"field": {"$gte": 12}}
Equivalent tofield >= 12
. -
{"$and": [<expr1>, <expr2>, <expr3>]}
Equivalent toexpr1 AND expr2 AND expr3
. -
{"$or": [<expr1>, <expr2>, <expr3>]}
Equivalent toexpr1 OR expr2 OR expr3
. -
{field: {"$like": "value"}}
Equivalent tofield like'%value%'
(fuzzy search). -
{field: {"$begin": "value"}}
Equivalent tofield like'value%'
(starts withvalue
). -
{field: {"$end": "value"}}
Equivalent tofield like'%value'
(ends withvalue
). -
{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: [{"$gt": 2}, {"$lt": 5}]}
{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}
-
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şittirfield desc
.Artan düzen:
{"field": "1"}
eşittirfield 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
var i int
var ret string
ret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")
while i <Len(ret) {
var vals map
vals = ret[0]
Println(vals["value"])
i = i + 1
}
ret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")
if ret != nil {
Println(ret)
Println(ret)
Println(ret)
}
DBRow
Belirtilen parametrelerle belirtilen bir tablodan veri sorgular. Bir dizi nesne haritasından oluşan bir dizi dizisi döndürür.
Sözdizimi
DBRow(table string)
[.Columns(columns array|string)]
[.Where(where map)]
[.WhereId(id int)]
[.Order(order array|string)]
[.Ecosystem(ecosystemid int)] map
-
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
var ret map
ret = DBRow("contracts").Columns(["id","value"]).Where({id: 1})
Println(ret)
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
DBSelectMetrics(metric string, timeInterval string, aggregateFunc string) array
-
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
var rows array
rows = DBSelectMetrics("ecosystem_tx", "30 days", "avg")
var i int
while(i <Len(rows)) {
var row map
row = rows[i]
i = i + 1
}
EcosysParam
Returns the value of a specified parameter in the ecosystem parameters table parameters.
Sözdizimi
EcosysParam(name string) string
-
name
Parametre adı.
Örnek
Println(EcosysParam("founder_account"))
GetHistory
Belirtilen bir tablodaki girişlerde yapılan değişikliklerin geçmişini döndürür.
Sözdizimi
GetHistory(table string, id int) array
-
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
var list array
var item map
list = GetHistory("blocks", 1)
if Len(list) > 0 {
item = list[0]
}
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
GetHistoryRow(table string, id int, rollbackId int) map
-
table
Tablo adı.
-
Id
Giriş ID.
-
rollbackId
rollback_tx Tablonun giriş ID.
$result = GetHistoryRow("contracts",205,2358)
GetColumnType
Belirtilen tablodaki belirtilen alanın veri türünü döndürür.
Sözdizimi
GetColumnType(table, column string) string
-
table
Tablo adı.
-
column
Alan adı.
Return value
Değerler döndürülebilir:
text, varchar, number, money, double, bytes, json, datetime, double
.
Örnek
var coltype string
coltype = GetColumnType("members", "member_name")
GetDataFromXLSX
XLSX elektronik tablolarından verileri döndürür.
Sözdizimi
GetDataFromXLSX(binId int, line int, count int, sheet int) string
-
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
var a array
a = GetDataFromXLSX(3, 12, 10, 1)
GetRowsCountXLSX
Belirtilen bir XLSX dosyasındaki satır sayısını döndürür.
Sözdizimi
GetRowsCountXLSX(binId int, sheet int) int
-
binId
İkili tablo ikili dosyasında XLSX biçiminde kimlik.
-
sheet
Liste numarası, varsayılan olarak 1'den başlar.
Örnek
var count int
count = GetRowsCountXLSX(binid, 1)
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
LangRes(label string, lang string) string
-
label
Dil kaynağı adı.
-
lang
İki karakterli dil kodu.
Örnek
warning LangRes("@1confirm", "en")
error LangRes("@1problems", "tr")
GetBlock
Belirtilen bir blok hakkında ilgili bilgileri döndürür.
Sözdizimi
GetBlock(blockID int64) map
-
blockID
Block ID.
Return value
Bir dizi nesne döndür:
-
id
Block ID.
-
time
Blok oluşturma zaman damgası.
-
key_id
Doğrulama düğümünün hesap adresi bloğu oluşturdu.
-
Örnek
var b map
b = GetBlock(1)
Println(b)
DBInsert
Belirtilen tabloya bir girdi ekler ve girdi kimliğini döndürür.
Sözdizimi
DBInsert(table string, params map) int
-
tblname
Tablo adı.
-
params
Anahtarların alan adları ve değerlerin eklenen değerler olduğu bir nesne dizisi.
Örnek
DBInsert("mytable", {name: "John Smith", amount: 100})
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
DBUpdate(tblname string, id int, params map)
-
tblname
Tablo adı.
-
Id
Entry ID.
-
params
Anahtarların alan adları ve değerlerin değişikliklerden sonra yeni değerler olduğu bir nesne dizisi.
Örnek
DBUpdate("mytable", myid, {name: "John Smith", amount: 100})
DBUpdateExt
Belirtilen tablodaki sorgu koşuluyla eşleşen bir sütunun değerini değiştirir.
Sözdizimi
DBUpdateExt(tblname string, where map, params map)
-
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
DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})
DelColumn
Belirtilen tabloda kaydı olmayan bir alanı silin.
Sözdizimi
DelColumn(tblname string, column string)
-
tblname
Tablo adı.
-
column
Silinecek alan.
DelColumn("mytable", "mycolumn")
DelTable
Hiçbir kaydı olmayan belirli bir tabloyu siler.
Sözdizimi
DelTable(tblname string)
-
tblname
Tablo adı.
Örnek
DelTable("mytable")
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
var list array
list = Append(list, "new_val")
Katılmak
"in dizisinin" öğelerini belirtilen bir ayırıcıyla bir dizede birleştirir.
Sözdizimi
Join(in array, sep string) string
-
İçinde
Array ismi.
-
sep
Ayırıcı.
Örnek
var val string, myarr array
myarr[0] = "first"
myarr[1] = 10
val = Join(myarr, ",")
Bölmek
"in dizesini" öğelere bölmek ve bunları bir diziye yerleştirmek için ayırıcıyı kullanır.
Sözdizimi
Split(in string, sep string) array
-
İçinde
Metinsel.
-
sep
Ayırıcı.
Örnek
var myarr array
myarr = Split("first,second,third", ",")
Len
Belirtilen dizideki öğelerin sayısını döndürür.
Sözdizimi
Len(val array) int
-
val
Dizi.
Örnek
if Len(mylist) == 0 {
...
}
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
Row(list array) map
-
list
DBFind işlevi tarafından döndürülen nesne dizisi.
Örnek
var ret map
ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()
Println(ret)
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
One(list array, column string) string
- list
DBFind işlevi tarafından döndürülen nesne dizisi.
-
column
Alan adı. Örnek
var ret string
ret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")
if ret != nil {
Println(ret)
}
GetMapKeys
Nesne dizisindeki anahtar diziyi döndürür.
Sözdizimi
GetMapKeys(val map) array
-
val
Nesne dizisi.
Örnek
var val map
var arr array
val["k1"] = "v1"
val["k2"] = "v2"
arr = GetMapKeys(val)
SortedKeys
Nesne dizisinde sıralanmış bir anahtar dizi döndürür.
Sözdizimi
SortedKeys(val map) array
-
val
Nesne dizisi.
Örnek
var val map
var arr array
val["k2"] = "v2"
val["k1"] = "v1"
arr = SortedKeys(val)
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
CallContract(name string, params map)
-
name
Çağrılan sözleşmenin adı.
-
params
Sözleşme girdi verilerinin ilişkisel dizisi.
Örnek
var par map
par["Name"] = "My Name"
CallContract("MyContract", par)
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
ContractAccess(name string, [name string]) bool
-
name
Sözleşme adı.
Örnek
ContractAccess("MyContract")
ContractAccess("MyContract","SimpleContract")
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
ContractConditions(name string, [name string]) bool
-
name
Sözleşme adı.
Örnek
ContractConditions("MainCondition")
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
EvalCondition(tablename string, name string, condfield string)
-
tablename
Tablo adı.
-
name
'name' alanı ile değeri sorgular.
-
condfield
Koşulları kontrol edilmesi gereken alanın adı.
Örnek
EvalCondition(`menu`, $Name, `conditions`)
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
GetContractById(id int) string
-
Id
Sözleşme tablosu sözleşmelerindeki sözleşme kimliği.
Örnek
var name string
name = GetContractById($IdContract)
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
GetContractByName(name string) int
-
name
Sözleşme tablosu sözleşmelerinde sözleşme adı.
Örnek
var id int
id = GetContractByName(`NewBlock`)
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
RoleAccess(id int, [id int]) bool
-
Id
Role ID.
Örnek
RoleAccess(1)
RoleAccess(1, 3)
İş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
TransactionInfo(hash: string)
-
hash
Onaltılık(hexadecimal) dize biçiminde işlem karması.
Return value
Bu işlev, JSON biçiminde bir dize döndürür:
{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}
-
contract
Sözleşme adı.
-
params
Sözleşme parametrelerine aktarılan veriler.
-
block
İşlemi işleyen bloğun kimliği.
Örnek
var out map
out = JSONDecode(TransactionInfo(hash))
Throw
Özel durum(exception) türünde bir hata oluşturur.
Sözdizimi
Throw(ErrorId string, ErrDescription string)
-
ErrorId
Hata tanımlayıcısı.
-
ErrDescription
Hata tanımlaması.
Return value
Bu tür işlem sonuçlarının biçimi:
{"type":"exception","error":"Error description","id":"Error ID"}
Örnek
Throw("Problem", "There is a problem")
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
ValidateCondition(condition string, state int)
-
condition
Doğrulanması gereken koşullu biçim.
-
state
Ekosistem kimliği. Global koşulu kontrol ederseniz, lütfen 0 olarak belirtin.
Örnek
ValidateCondition(`ContractAccess("@1MyContract")`, 1)
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
AddressToId(address string) int
-
Address
XXXX-...-XXXX
biçiminde veya sayı biçiminde cüzdan adresi.
Örnek
wallet = AddressToId($Recipient)
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
IdToAddress(id int) string
-
Id
Hesap adresi.
Örnek
$address = IdToAddress($id)
PubToID
Hesap adresi, genel anahtar tarafından onaltılık biçimde döndürülür.
Sözdizimi
PubToID(hexkey string) int
-
hexkey
Onaltılık biçimde genel anahtar.
Örnek
var wallet int
wallet = PubToID("04fa5e78.....34abd6")
DecodeBase64
Base64 biçimini belirterek bir dize döndürür
Sözdizimi
DecodeBase64(input string) string
-
Input
Base64 biçiminde dize.
Örnek
val = DecodeBase64(mybase64)
EncodeBase64
Bir dize belirterek base64 biçiminde bir dize döndürür.
Sözdizimi
EncodeBase64(input string) string
-
Input
Kodlanacak dize.
Örnek
var base64str string
base64str = EncodeBase64("my text")
Float
Bir tamsayıyı veya dizeyi bir kayan sayıya dönüştürür.
Sözdizimi
Float(val int|string) float
-
val
Bir tamsayı veya dize.
Örnek
val = Float("567.989") + Float(232)
HexToBytes
Onaltılık biçimdeki bir dizeyi bayt türü baytlara dönüştürür.
Sözdizimi
HexToBytes(hexdata string) bytes
-
hexdata
Onaltılık biçimde bir dize.
Örnek
var val bytes
val = HexToBytes("34fe4501a4d80094")
FormatMoney
exp / 10 ^ basamağının dize değerini döndürür.
Sözdizimi
FormatMoney(exp string, digit int) string
-
Exp
Dize biçiminde bir sayı.
-
digit
Exp/10^digit
ifadesinde 10'un üssü (pozitif veya negatif). Pozitif değerler ondalık basamakları belirler.
Example
s = FormatMoney("78236475917384", 0)
Random
Returns a random number between min and max (min <= result <max). Both min and max must be positive numbers.(Min ve max arasında rastgele bir sayı döndürür (min <= sonuç <maks). Hem min hem de max pozitif sayılar olmalıdır.
Sözdizimi
Random(min int, max int) int
-
min
Rastgele sayılar arasındaki minimum değer.
-
max
Rastgele sayıların üst sınırı. Üretilen rastgele sayı bu değerden daha az olacaktır.
Örnek
i = Random(10,5000)
Int
Dize biçimindeki bir değeri tam sayıya dönüştürür.
Sözdizimi
Int(val string) int
-
val
Dize biçiminde bir sayı.
Örnek
mystr = "-37763499007332"
val = Int(mystr)
Hash
Sistem şifreleme kitaplığı kriptosu tarafından oluşturulan, belirtilen bir bayt dizisinin veya dizesinin karmasını döndürür.
Sözdizimi
Hash(val interface{}) string, error
-
val
Bir dize veya bayt dizisi.
Örnek
var hash string
hash = Hash("Test message")
Sha256
Belirtilen bir dizenin SHA256 karmasını döndürür.
Sözdizimi
Sha256(val string) string
-
val
Bir dize, Sha256 karma işlemini gerektirir.
Örnek
var sha string
sha = Sha256("Test message")
Str
Bir tamsayı int veya kayan noktalı sayıyı bir dizgeye dönüştürür.
Sözdizimi
Str(val int|float) string
-
val
Bir tamsayı veya kayan sayı.
Örnek
myfloat = 5.678
val = Str(myfloat)
JSONEncode
Bir sayıyı, dizeyi veya diziyi JSON biçiminde bir dizeye dönüştürür.
Sözdizimi
JSONEncode(src int|float|string|map|array) string
-
src
Dönüştürülecek veriler.
Örnek
var mydata map
mydata["key"] = 1
var json string
json = JSONEncode(mydata)
JSONEncodeIndent
Bir sayıyı, dizeyi veya diziyi JSON biçiminde bir dizeye dönüştürmek için belirtilen girintiyi kullanır.
Sözdizimi
JSONEncodeIndent(src int|float|string|map|array, indent string) string
-
src
Dönüştürülecek veriler.
-
Indent
Dize girinti olarak kullanılacaktır.
Örnek
var mydata map
mydata["key"] = 1
var json string
json = JSONEncodeIndent(mydata, "\t")
JSONDecode
JSON biçimindeki bir dizeyi sayı, dize veya diziye dönüştürür.
Sözdizimi
JSONDecode(src string) int|float|string|map|array
-
src
JSON biçiminde veri içeren bir dize.
Örnek
var mydata map
mydata = JSONDecode(`{"name": "John Smith", "company": "Smith's company"}`)
HasPrefix
Dizenin belirtilen bir dizeyle başlayıp başlamadığını kontrol eder.
Sözdizimi
HasPrefix(s string, prefix string) bool
-
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
if HasPrefix($Name, `my`) {
...
}
Contains
Dizenin belirtilen bir alt dize içerip içermediğini kontrol eder.
Sözdizimi
Contains(s string, substr string) bool
-
s
Söz dizisi.
-
substr
Bir alt dize.
Return value
Dize alt dizeyi içeriyorsa, true
değerini döndürür.
Örnek
if Contains($Name, `my`) {
...
}
Replace
Dizedeki eski (eski dize) yeni (yeni dize) ile değiştirir.
Sözdizimi
Replace(s string, old string, new string) string
-
s
Orjinal dize
-
Old
Değiştirilecek alt dize.
-
new
Yeni dize.
Örnek
s = Replace($Name, `me`, `you`)
Size
Belirtilen dizedeki bayt sayısını döndürür.
Sözdizimi
Size(val string) int
-
val
Söz dizisi.
Örnek
var len int
len = Size($Name)
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
Sprintf(pattern string, val ...) string
-
pattern
Bir dize şablonu.
Örnek
out = Sprintf("%s=%d", mypar, 6448)
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
Substr(s string, offset int, length int) string
-
val
Söz dizisi.
-
Offset
Offset.
-
length
Alt dizinin uzunluğu.
Örnek
var s string
s = Substr($Name, 1, 10)
ToLower
Belirtilen bir dizeyi küçük harfle döndürür.
Sözdizimi
ToLower(val string) string
-
val
Söz dizisi.
Örnek
val = ToLower(val)
ToUpper
Belirtilen bir dizeyi büyük harfle döndürür.
Sözdizimi
ToUpper(val string) string
-
val
Söz dizisi.
Örnek
val = ToUpper(val)
TrimSpace
Belirtilen bir dizenin başındaki ve sonundaki boşlukları, sekmeleri ve yeni satırları siler.
Sözdizimi
TrimSpace(val string) string
-
val
Söz dizisi.
Örnek
var val string
val = TrimSpace(" mystr ")
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
Floor(x float|int|string) int
-
x
Bir sayı, ondalık bir sayı, ve bir söz dizisi.
Örnek
val = Floor(5.6) // returns 5
Log
Belirtilen sayının, kayan sayının ve dizenin doğal logaritmasını döndürür.
Sözdizimi
Log(x float|int|string) float
-
x
Bir sayı, ondalık bir sayı, ve bir söz dizisi.
Örnek
val = Log(10)
Log10
Belirtilen sayının, kayan sayının ve dizenin 10 tabanlı logaritmasını döndürür.
Sözdizimi
Log10(x float|int|string) float
-
x
Bir sayı, ondalık bir sayı, ve bir söz dizisi.
Örnek
val = Log10(100)
Pow
Belirtilen tabanı belirtilen güce (xy) döndürür.
Sözdizimi
Pow(x float|int|string, y float|int|string) float
-
x
Taban numarası.
-
y
Üs.
Örnek
val = Pow(2, 3)
Round
En yakın tam sayıya yuvarlanmış belirtilen bir sayının değerini döndürür.
Sözdizimi
Round(x float|int|string) int
-
x
Bir sayı.
Örnek
val = Round(5.6)
Sqrt
Belirtilen sayının karekökünü döndürür.
Sqrt(x float|int|string) float
-
x
Bir sayı.
Örnek
val = Sqrt(225)
StringToBytes
Bir dizeyi baytlara dönüştürür.
Sözdizimi
StringToBytes(src string) bytes
-
src
Bir sözdizisi.
Örnek
var b bytes
b = StringToBytes("my string")
BytesToString
Baytları dizeye dönüştürür.
Sözdizimi
BytesToString(src bytes) string
-
src
Byte.
Example
var s string
s = BytesToString($Bytes)
SysParamString
Belirtilen platform parametresinin değerini döndürür.
Sözdizimi
SysParamString(name string) string
-
name
Parametre adı.
Örnek
url = SysParamString(`blockchain_url`)
SysParamInt
Belirtilen platform parametresinin değerini sayı biçiminde döndürür.
Sözdizimi
SysParamInt(name string) int
-
name
Parametre ismi.
Örnek
maxcol = SysParam(`max_columns`)
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
DBUpdateSysParam(name, value, conditions string)
-
name
Parametre adı.
-
value
Parametrenin yeni değeri.
-
conditions
Bir parametreyi güncellemek için yeni koşullar.
Örnek
DBUpdateSysParam(`fuel_rate`, `400000000000`, ``)
UpdateNotifications
Veritabanından belirtilen bir anahtarın bildirim listesini alır ve elde edilen bildirimi Centrifugo'ya gönderir.
Sözdizimi
UpdateNotifications(ecosystemID int, keys int...)
-
EcosystemID
Ecosistem ID.
-
key
Virgülle ayrılmış hesap adresleri listesi. Veya hesap adreslerinin bir listesini belirtmek için bir dizi kullanabilirsiniz.
Örnek
UpdateNotifications($ecosystem_id, $key_id, 23345355454, 35545454554)
UpdateNotifications(1, [$key_id, 23345355454, 35545454554])
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
UpdateRolesNotifications(ecosystemID int, roles int ...)
-
EcosystemID
Ecosistem ID.
-
roles
Virgülle ayrılmış rol kimliklerinin listesi. Veya rol kimliklerinin bir listesini belirtmek için bir dizi kullanabilirsiniz.
Örnek
UpdateRolesNotifications(1, 1, 2)
HTTPRequest
Belirtilen adrese HTTP istekleri gönderir.
Not
Bu işlev yalnızca CLB sözleşmelerinde kullanılabilir.
Sözdizimi
HTTPRequest(url string, method string, heads map, pars map) string
-
Url
Talebin gönderileceği adres.
-
method
İstek türü (GET veya POST).
-
heads
Bir dizi istek başlığı, nesne.
-
pars
İstenen parametreler.
Örnek
var ret string
var ret string
var ret string
var pars, heads, json map
heads["Authorization"] = "Bearer "+ $auth_token
pars["obs"] = "true"
ret = HTTPRequest("http://localhost:7079/api/v2/content/page/default_page","POST", heads, pars)
json = JSONToMap(ret)
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
HTTPPostJSON(url string, heads map, pars string) string
-
Url
Talebin gönderileceği adres.
-
heads
Bir dizi istek başlığı, nesne.
-
pars
Parametreleri bir JSON dizesi olarak isteyin.
Örnek
var ret string
var ret string
var ret string
var heads, json map
heads["Authorization"] = "Bearer "+ $auth_token
ret = HTTPPostJSON("http://localhost:7079/api/v2/content/page/default_page", heads, `{"obs":"true"}`)
json = JSONToMap(ret)
BlockTime
Bloğun oluşturma süresini SQL biçiminde döndürür.
Sözdizimi
BlockTime()
Örnek
var mytime string
mytime = BlockTime()
DBInsert("mytable", myid, {time: mytime})
DateTime
Unixtime zaman damgasını YYYY-AA-GG SS:MI:SS biçiminde bir dizeye dönüştürür.
Sözdizimi
DateTime(unixtime int) string
Örnek
DateTime(1532325250)
UnixDateTime
YYYY-AA-GG SS:MI:SS biçimindeki bir dizeyi bir zaman damgası unixtime'a dönüştürür
Sözdizimi
UnixDateTime(datetime string) int
Örnek
UnixDateTime("2018-07-20 14:23:10")
CreateOBS
Bir alt CLB oluşturur.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
CreateOBS(OBSName string, DBUser string, DBPassword string, OBSAPIPort int)
-
OBSName
CLB ismi.
-
DBUser
Veritabanının rol adı.
-
DBPassword
Role ait şifre.
-
OBSAPIPort
API isteğinin bağlantı noktası.
Örnek
CreateOBS("obsname", "obsuser", "obspwd", 8095)
GetOBSList
Alt CLB'lerin listesini döndürür.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
GetOBSList()
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
RunOBS(OBSName string)
-
OBSName
CLB adı.
Yalnızca harf ve rakamlardan oluşabilir ve boşluk simgesi kullanılamaz.
StopOBS
Belirtilen bir CLB'nin sürecini durdurun.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
StopOBS(OBSName string)
-
OBSName
CLB adı.
Yalnızca harf ve rakamlardan oluşabilir ve boşluk simgesi kullanılamaz.
RemoveOBS
Belirtilen bir CLB'nin sürecini siler.
Bu işlev yalnızca ana CLB modunda kullanılabilir.
Sözdizimi
RemoveOBS(OBSName string)
- OBSName
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.
NewMenu
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.
EditMenu
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.
AppendMenu
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 anahtar1
; -
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.