Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dev-website-docs/_navbar.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
- [:cn: 中文](/docs-cn/)
- [:kr: 한국어](/docs-kr/)
- [:jp: 日本語](/docs-jp/)
- [:tr: Türkçe](/docs-tr/)
1 change: 1 addition & 0 deletions dev-website-docs/docs-cn/_navbar.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
- [:cn: 中文](/docs-cn/)
- [:kr: 한국어](/docs-kr/)
- [:jp: 日本語](/docs-jp/)
- [:tr: Türkçe](/docs-tr/)
1 change: 1 addition & 0 deletions dev-website-docs/docs-en/_navbar.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
- [:cn: 中文](/docs-cn/)
- [:kr: 한국어](/docs-kr/)
- [:jp: 日本語](/docs-jp/)
- [:tr: Türkçe](/docs-tr/)
1 change: 1 addition & 0 deletions dev-website-docs/docs-jp/_navbar.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
- [:cn: 中文](/docs-cn/)
- [:kr: 한국어](/docs-kr/)
- [:jp: 日本語](/docs-jp/)
- [:tr: Türkçe](/docs-tr/)
1 change: 1 addition & 0 deletions dev-website-docs/docs-kr/_navbar.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
- [:cn: 中文](/docs-cn/)
- [:kr: 한국어](/docs-kr/)
- [:jp: 日本語](/docs-jp/)
- [:tr: Türkçe](/docs-tr/)

Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
## SmartX Sürümleri

[SmartX](https://smartx.ont.io), en gelişmiş özellikleri ve kararlı geliştirme deneyimini sunan resmi olarak yayınlanmış sürümdür.

[SmartX beta](https://smartxbeta.ont.io), en yeni özellikleri içeren beta sürümdür. Ancak bazı hatalar içerebilir; bu hatalar önce SmartX topluluk sürümünde düzeltilir.

[SmartX debug](http://smartxdebug.ont.io), açık kaynaklı topluluk sürümüdür. Daha kolay geliştirme için giriş (login) özelliği kaldırılmıştır.

## Hata Ayıklama Süreci

#### Adım 1 - Python projesi oluşturma

Python dilini ve boş şablonu seçin. [OEP4Sample.py](https://github.com/tonyclarking/python-template/blob/master/OEP4Sample/OEP4Sample.py) dosyasındaki kodu editöre kopyalayın.

![step 1.png](https://upload-images.jianshu.io/upload_images/150344-cc24c675bc9a3267.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![step 1.png](https://upload-images.jianshu.io/upload_images/150344-cdb9c5585a074881.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### Adım 2 - Derleme

Akıllı sözleşmeyi derlemek için "Compile" butonuna tıklayın. ABI ve AVM üretilir, Opcode ise altta görüntülenir.

![step2.png](https://upload-images.jianshu.io/upload_images/150344-807d1c9add5be98f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### Adım 3 - Kesme noktası (breakpoint) belirleme

Satır numarasının solundaki alana tıklayın; kırmızı bir kesme noktası görünecektir.

![step3.png](https://upload-images.jianshu.io/upload_images/150344-82b13a0a1c8372db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### Adım 4 - Hata ayıklama modunda çalıştırma

Önce çalıştırılacak fonksiyonu seçin, parametre tiplerini belirleyin ve parametreleri doldurun.

Ardından "Debug Run" butonuna tıklayın.

![step4.png](https://upload-images.jianshu.io/upload_images/150344-f890c3707e48fea4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

"Debug Run" butonuna tıkladıktan sonra "Debug run" durumu "Waiting" olarak değişir.

#### Adım 5 - Hata ayıklama panelini kullanma

Hata ayıklama işlemi için gezinme panelini kullanın.

![debug panel.png](https://upload-images.jianshu.io/upload_images/150344-6b73326a3e5388e4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Soldan sağa:

Continue (bir sonraki kesme noktasına atla), Debug Stop, Step Over Line, Step Over Opcode, Clear (pencereyi temizle)

## Hata Ayıklama Paneli

Panel, mevcut akıllı sözleşme hakkında temel bilgileri gösterir.

![5.png](https://upload-images.jianshu.io/upload_images/150344-34922a573030a17a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Soldan sağa:

Logs: çalıştırma sonucunu gösterir

Evaluation Stack: o an çalıştırılmakta olan veriyi geçici olarak tutar

Alt Stack: tüm değişkenleri saklar. Locals, değişkenleri alt stack'ten okur

History: OP kodunun çalıştırma geçmişini gösterir

Locals: mevcut bağlamla ilişkili yerel değişkenleri gösterir

Storage: akıllı sözleşmenin veritabanı

## Konsolda Parametre Değiştirme

#### Değişken nasıl değiştirilir

Parantez içindeki bir değeri değiştirdiğinizde, ilgili değişkenin değeri de değişir.

![change locals.png](https://upload-images.jianshu.io/upload_images/150344-8c122e82a7d02d7d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### Storage nasıl değiştirilir

Storage konsolunda herhangi bir anahtarı (key) ve karşılık gelen değerini ekleyebilir veya silebilirsiniz.

![change storage.png](https://upload-images.jianshu.io/upload_images/150344-52aa4be649311046.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### Hata ayıklamada dönüştürme aracını kullanma

Kullanmak istediğiniz fonksiyonu seçin ve veriyi ilgili alana girin.

Tool panelinin fonksiyon listesi

![tool panel.png](https://upload-images.jianshu.io/upload_images/150344-46e5da4eb0a4a8c1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
228 changes: 228 additions & 0 deletions dev-website-docs/docs-tr/QuickGuide/02-gelistirmeye-baslama.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
# Ontology ile Geliştirmeye Başlama

Bu rehber, Ontology üzerinde geliştirmeye sıfırdan başlamak isteyen bir
geliştiriciyi, kendi bilgisayarında çalışan bir test zinciri kurmaktan ilk
dijital kimliğini (ONT ID) ve doğrulanabilir kimlik belgesini (Verifiable
Credential) üretmeye kadar götürür. Gerçek para veya genel ağa bağlanmak
gerekmez; her şey yerelde, `testmode` ile yapılır.

## İçindekiler

1. [Ontology kısaca](#ontology-kısaca)
2. [Ortam hazırlığı](#ortam-hazırlığı)
3. [Kaynaktan derleme](#kaynaktan-derleme)
4. [Yerel test zinciri çalıştırma](#yerel-test-zinciri-çalıştırma)
5. [Cüzdan ve hesap oluşturma](#cüzdan-ve-hesap-oluşturma)
6. [İlk ONT ID](#ilk-ont-id)
7. [İlk Verifiable Credential](#ilk-verifiable-credential)
8. [Sonraki adımlar](#sonraki-adımlar)

---

## Ontology kısaca

Ontology, kimlik ve veri odaklı, yüksek performanslı bir genel (public)
blokzincirdir. Bilmeniz gereken birkaç kavram:

- **ONT / ONG**: ONT, ağın staking ve yönetişim varlığıdır. ONG ise işlem
ücretlerinin (gas) ödendiği varlıktır ve ONT tutuldukça zamanla üretilir.
- **VBFT**: Ontology'nin konsensüs algoritması — VRF tabanlı, BFT ve PoS
öğelerini birleştirir.
- **ONT ID**: W3C DID (Decentralized Identifier) spesifikasyonuna dayalı,
zincir üzerinde yaşayan merkeziyetsiz kimlik.
- **Sanal makineler**: Ontology NeoVM, WasmVM ve EVM sözleşmelerini destekler.
Yani Solidity ile de, Rust/C++ (WASM) ile de sözleşme yazılabilir.

## Ortam hazırlığı

Bu rehber için gerekenler:

- **Go 1.23 veya üzeri** — çekirdek Go ile yazılmıştır.
`go version` ile kontrol edin.
- **Git**
- **make** ve bir C derleyicisi (macOS'ta Xcode Command Line Tools, Linux'ta
`build-essential`)

> Not: Çekirdek düğüm bir WASM JIT bileşeni için cgo kullanır. Bu yüzden
> `make` işlemini hedef işletim sisteminin kendisinde çalıştırın; farklı bir
> işletim sisteminden Linux ikilisi için çapraz derleme (cross-compile)
> yapmak istiyorsanız uygun bir cgo çapraz araç zinciri (toolchain)
> kurmanız gerekir.

## Kaynaktan derleme

```bash
git clone https://github.com/ontio/ontology.git
cd ontology
make ontology
```

Derleme bittiğinde dizinde `ontology` adlı bir ikili dosya oluşur. Sürümü
kontrol edin:

```bash
./ontology --version
```

## Yerel test zinciri çalıştırma

Ontology, tek düğümlü bir yerel zinciri `--testmode` ile başlatabilir. Bu
mod SOLO konsensüsü kullanır ve birkaç saniyede bir blok üretir. `testmode`
genesis'i tüm başlangıç arzını (ONT ve ONG) düğümün cüzdan hesabına verir,
bu yüzden gas için ayrıca bir şey yapmanıza gerek kalmaz.

Önce zincirin verilerini tutacağı ayrı bir dizin oluşturun (böylece kaynak
ağacınız temiz kalır):

```bash
mkdir -p ~/ontology-testnet
cd ~/ontology-testnet
```

Test zinciri bir cüzdan olmadan başlamaz. Bir sonraki adımda oluşturuyoruz.

## Cüzdan ve hesap oluşturma

```bash
/path/to/ontology account add -d -w ./wallet.dat
```

- `-d` varsayılan ayarları kullanır (ECDSA, P-256, SHA256withECDSA).
- `-w` cüzdan dosyasının yolunu belirtir.

Komut sizden bir parola isteyecek. **Bu cüzdan yalnızca yerel test içindir;
gerçek bir değer taşımaz.** Yine de parolasını gerçek bir yerde
kullanmayın.

Oluşan adres ve genel anahtar ekrana yazılır. Artık zinciri başlatabilirsiniz:

```bash
/path/to/ontology --testmode --rest --restport 20334 --rpcport 20336 \
--wallet ./wallet.dat --password <parola> --loglevel 1
```

Başka bir terminalde REST API'nin çalıştığını doğrulayın:

```bash
curl http://localhost:20334/api/v1/version
```

Hesabınızın bakiyesine bakın (adresi kendi adresinizle değiştirin):

```bash
curl http://localhost:20334/api/v1/balance/<adres>
```

`testmode` genesis'i sayesinde bakiye 1 milyar ONT ve büyük miktarda ONG
gösterecektir.

## İlk ONT ID

ONT ID, `did:ont:` ön ekiyle başlayan bir tanımlayıcıdır ve zincir üzerinde
kaydedilir. En hızlı yol CLI'dır:

```bash
/path/to/ontology account add --ontid -w ./wallet.dat
```

`--ontid` bayrağı normal bir hesap yerine bir ONT ID üretir. Üretilen kimlik
henüz yereldedir; zincire kaydetmek için bir işlem gönderilir (SDK bölümüne
bakın).

Go SDK ile programatik olarak da yapılabilir:

```go
import (
sdk "github.com/ontio/ontology-go-sdk"
)

ontSdk := sdk.NewOntologySdk()
ontSdk.NewRpcClient().SetAddress("http://localhost:20336")

wallet, _ := ontSdk.OpenWallet("./wallet.dat")
payer, _ := wallet.GetDefaultAccount([]byte("<parola>"))

identity, _ := wallet.NewDefaultSettingIdentity([]byte("<parola>"))
// identity.ID -> "did:ont:..."

// ONT ID'yi zincire kaydet (gas, payer hesabından ödenir)
txHash, _ := ontSdk.Native.OntId.RegIDWithPublicKey(
2500, 20000, payer, identity.ID, payer)
ontSdk.WaitForGenerateBlock(30 * time.Second)
```

## İlk Verifiable Credential

Verifiable Credential (VC), bir tarafın (issuer) başka bir taraf (holder)
hakkında imzaladığı, doğrulanabilir bir iddia kümesidir. Ontology'nin Go
SDK'sı bunu W3C VC modeline uygun şekilde üretir.

Tipik akış:

1. Issuer ve holder için birer ONT ID üretilir ve zincire kaydedilir.
2. Holder, imzalanmak üzere bir talep (sign request) oluşturur; issuer bunu
doğrular.
3. Issuer credential'ı oluşturur ve imzalar.
4. Credential'ın durumu (geçerli/iptal) bir sözleşmeye commit edilir.
5. Bağımsız bir doğrulayıcı; issuer'ın güvenilirliğini, tarihleri, imzayı ve
zincirdeki durumu ayrı ayrı kontrol eder.

```go
// credentialSubject: credential'ın taşıdığı iddialar.
// ONEMLI: alanları alfabetik sırada tanımlayın. SDK, imzalanan mesaji
// yeniden serilestirdiginde struct'i alfabetik siralanan bir map'e
// donusturur; alan sirasi alfabetik degilse imza dogrulamasi basarisiz olur.
type ResearcherSubject struct {
Field string `json:"field"`
Id string `json:"id"`
Institution string `json:"institution"`
Name string `json:"name"`
Role string `json:"role"`
}

subject := &ResearcherSubject{
Id: holder.ID,
Name: "Ada Lovelace",
Role: "Medical Physicist",
Institution: "Demo University",
Field: "Radiation Dosimetry",
}

req, _ := ontSdk.Credential.GenSignReq(subject, holder.ID, payer)
_ = ontSdk.Credential.VerifySignReq(req)

expiration := time.Now().UTC().AddDate(1, 0, 0).Unix()
credential, _ := ontSdk.Credential.CreateCredential(
[]string{"https://example.org/credentials/researcher/v1"},
[]string{"ResearcherCredential"},
subject, issuer.ID, expiration, "", "", payer)

// Zincire commit
statusAddr, _ := common.AddressFromHexString(credential.CredentialStatus.Id)
ontSdk.Credential.CommitCredential(
statusAddr, 2500, 20000, credential.Id,
issuer.ID, holder.ID, payer, payer)
ontSdk.WaitForGenerateBlock(30 * time.Second)

// Bağımsız doğrulama
_ = ontSdk.Credential.VerifyCredibleOntId([]string{issuer.ID}, credential)
_ = ontSdk.Credential.VerifyIssuanceDate(credential)
_ = ontSdk.Credential.VerifyExpirationDate(credential)
_ = ontSdk.Credential.VerifyIssuerSignature(credential)
_ = ontSdk.Credential.VerifyStatus(credential)
```

Çalışan, uçtan uca bir örnek: <https://github.com/SafraNako/ont-researcher-credential>
— issuer ve holder ONT ID üretimi, imza talebi, credential imzalama, zincire
commit ve beş bağımsız doğrulamayı bir arada gösterir.

## Sonraki adımlar

- **SDK'lar**: Go, TypeScript, Java ve (eski) Python SDK'ları vardır. En
bakımlı olanlar Go ve TypeScript'tir.
- **Sözleşme geliştirme**: EVM için Solidity + standart Ethereum araçları;
WASM için `ontology-wasm-cdt-rust`.
- **Resmi dokümanlar**: <https://dev-docs.ont.io>
- **Katkı**: Depolar <https://github.com/ontio> altında. Küçük ve net
başlayın — dokümantasyon, kırık bağlantı, eksik örnek, sonra gerçek hata
ve özellikler.
Loading