# Installation

### Siapkan Aleo Wallet

pertama kita generate aleo wallet di [link](https://aleo.tools/) ini dan klik generate.

{% hint style="danger" %}
Jangan berikan data ini ke siapapun dan foto ini hanya contoh.
{% endhint %}

<figure><img src="https://3513762394-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHnfaXqsjt2Q8hoDykMmk%2Fuploads%2FRep10MjqOQxzocEHo2rq%2Fimage_2023-07-22_190054234.png?alt=media&#x26;token=87bd968a-b07e-4cff-8255-ca46f58fc3a8" alt=""><figcaption></figcaption></figure>

Simpan 3 kolom tersebut ke tempat yang aman dan jangan sampai siapapun mengetahui private key kalian.

### Request Faucet via SMS

Kalian perlu test token ALEO untuk deploy contract nanti, kalian bisa kirim SMS pada nomor ini `+1-867-888-5688` dan kirim pesan seperti dibawah ini.

{% code overflow="wrap" %}

```
Send 50 credits to aleo1hcgx79gqerlj4ad2y2w2ysn3pc38nav69vd2r5lc3hjycfy6xcpse0cag0
```

{% endcode %}

{% hint style="warning" %}
Ubah address-nya dengan address yang sudah kamu dapatkan di step pertama.
{% endhint %}

Setelah mendapatkan respon dari SMS, kalian bisa cek status faucet sudah dikirim atau tidak dengan mencarinya di [link](https://faucet.aleo.org/) ini. Kemudian masukkan address kalian dan jangan lupa simpan **Transaction ID**-nya jika sudah muncul dan tidak dalam status **pending**.&#x20;

### Download Packages Yang Diperlukan

Download bahan-bahan yang diperlukan untuk deploy dan excute contract nanti beserta tmux untuk mengantisipasi ketika kehilangan koneksi VPS, instalasi kalian tetap berjalan. Fungsinya sama seperti menggunakan screen.

{% code overflow="wrap" %}

```bash
sudo apt update && \
sudo apt install make clang pkg-config libssl-dev build-essential gcc xz-utils git curl vim tmux ntp jq llvm ufw -y && \
tmux new -s deploy
```

{% endcode %}

### Buat Variable Untuk Wallet

Tujuannya agar mempermudah untuk menjalankan command dengan menggunakan variable.

{% code overflow="wrap" %}

```bash
echo Enter your Private Key: && read PK && \
echo Enter your View Key: && read VK && \
echo Enter your Address: && read ADDRESS
```

{% endcode %}

{% hint style="info" %}
Tidak perlu edit command diatas.
{% endhint %}

Setelah itu kalian enter dan masukkan satu per satu kolom yang dibutuhkan. Jika sudah selesai kalian bisa double check kembali apakah data yang kalian masukkan sudah sama atau tidak dengan menggunakan command dibawah ini.

{% code overflow="wrap" %}

```bash
echo Private Key: $PK && \
echo View Key: $VK && \
echo Address: $ADDRESS
```

{% endcode %}

Jika sudah sama seperti yang kalian input, kemudian lanjut buat variable untuk **Transaction ID** dari request faucet tadi.

{% code overflow="wrap" %}

```bash
echo Enter your Transaction ID: && read TI
```

{% endcode %}

Setelah itu tekan enter dan masukkan **Transaction ID** kalian yang sudah didapatkan melalui faucet link sebelumnya. Kemudian buat variable **CIPHERTEXT** untuk melakukan deploy nanti.

{% code overflow="wrap" %}

```bash
CIPHERTEXT=$(curl -s https://vm.aleo.org/api/testnet3/transaction/$TI | jq -r '.execution.transitions[0].outputs[0].value')
```

{% endcode %}

### **Install SnarkOS dan Leo**

Pertama kalian install snarkOS dan build.

{% code overflow="wrap" %}

```bash
cd $HOME
git clone https://github.com/AleoHQ/snarkOS.git --depth 1
cd snarkOS
bash ./build_ubuntu.sh
source $HOME/.bashrc
source $HOME/.cargo/env
```

{% endcode %}

Setelah itu install leo dengan cargo.

{% code overflow="wrap" %}

```bash
cd $HOME
git clone https://github.com/AleoHQ/leo.git
cd leo
cargo install --path .
```

{% endcode %}

### **Deploy Contract**

Pertama kalian buat variable dan folder untuk persiapan deploy contract.

{% code overflow="wrap" %}

```bash
NAME=helloworld_"${ADDRESS:4:6}"
mkdir $HOME/leo_deploy
cd $HOME/leo_deploy
leo new $NAME
```

{% endcode %}

Setelah itu buat variable RECORD untuk melakukan deploy contract.

{% code overflow="wrap" %}

```bash
RECORD=$(snarkos developer decrypt --ciphertext $CIPHERTEXT --view-key $VK)
```

{% endcode %}

Kemudian gunakan command dibawah ini untuk men-deploy contract.

{% code overflow="wrap" %}

```bash
snarkos developer deploy "$NAME.aleo" \
--private-key "$PK" \
--query "https://vm.aleo.org/api" \
--path "$HOME/leo_deploy/$NAME/build/" \
--broadcast "https://vm.aleo.org/api/testnet3/transaction/broadcast" \
--fee 4000000 \
--record "$RECORD"
```

{% endcode %}

Setelah selesai maka hasilnya kurang lebih seperti gambar dibawah ini.

<figure><img src="https://3513762394-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHnfaXqsjt2Q8hoDykMmk%2Fuploads%2FCo1FipNyuI8RaS5uiQUP%2Fimage_2023-07-22_193723531.png?alt=media&#x26;token=1950d523-ba60-4145-88d3-5101e76f910a" alt=""><figcaption></figcaption></figure>

Jangan lupa cek transaksi kalian di [explorer](https://explorer.hamp.app/) untuk memastikan jika deploy contract kalian sudah berhasil atau tidak. Kalian cukup copy tx hash yang berawalan `at1...` setelah itu cari di explorer.

### **Execute Contract**

Gunakan tx hash yang tadi kalian dapatkan setelah deploy contract. Kemudian jalankan command dibawah ini dan tekan enter, lalu isi dengan tx hash yang sudah kalian simpan tadi.

{% code overflow="wrap" %}

```bash
echo Enter your Deploy hash: && read DH
```

{% endcode %}

Setelah itu buat variable CIPHERTEXT lagi untuk melakukan execute contract.

{% code overflow="wrap" %}

```bash
CIPHERTEXT=$(curl -s https://vm.aleo.org/api/testnet3/transaction/$DH | jq -r '.fee.transition.outputs[].value')
```

{% endcode %}

Jika sudah selesai, buat kembali variable RECORD.

{% code overflow="wrap" %}

```bash
RECORD=$(snarkos developer decrypt --ciphertext $CIPHERTEXT --view-key $VK)
```

{% endcode %}

Kemudian buat execute contract dengan menggunakan command dibawah ini.

{% code overflow="wrap" %}

```bash
snarkos developer execute "$NAME.aleo" "hello" "1u32" "2u32" \
--private-key $PK \
--query "https://vm.aleo.org/api" \
--broadcast "https://vm.aleo.org/api/testnet3/transaction/broadcast" \
--fee 1000000 \
--record "$RECORD"
```

{% endcode %}

Jika sudah selesai menggunakan command diatas, maka hasilnya akan seperti gambar dibawah ini.

<figure><img src="https://3513762394-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHnfaXqsjt2Q8hoDykMmk%2Fuploads%2FwUqDbPgQPf04UZ87rVAE%2Fimage_2023-07-22_194401925.png?alt=media&#x26;token=8233139a-28bb-4597-b0b5-82fb4a0aaaad" alt=""><figcaption></figcaption></figure>

Jangan lupa cek kembali ke [explorer](https://explorer.hamp.app/) dan copy id transaksi yang berawalan `at1...` dan jika sudah sukses, maka kalian sudah selesai melakukan Deploy dan Execute Contract.

Sumber : [Testnet-Pride](https://github.com/testnet-pride/Node-manuals/tree/main/Testnets/Aleo/Testnet3-phase2)
