Hexa's Blog

How to install ssl certificate for nginx with SSLs.com?

28/06/2022 @ Saigon SSL

In this post, I would like to introduce a way to quickly setup SSL certificate for any website with https://www.ssls.com/

Step 1: Generate private key and certificate signing request (csr).

To generate private key and certificate signing request, use the following command with a note of these parameters.

  • -keyout: private key, for example: your_domain.pem
  • -out: certificate signing request, for example your_domain.csr
$ openssl req -new -newkey rsa:2048 -nodes \
              -keyout your_domain.pem \
              -out your_domain.csr \
              -subj /CN=www.hexalink.xyz

Step 2: Via the ssls.com, submit certificate signing request (csr)

[1] Submit Certificate Signing Request
[1] Submit Certificate Signing Request

Step 3: Add a CNAME record in the Domain Manager like Hostinger & Waiting

Step 4: Get certificate issued and download

After the download process, there gonna be three file

  • your_domain.ca-bundle
  • your_domain.crt
  • your_domain.p7b
[2] Download Certificate from ssls.com
[2] Download Certificate from ssls.com

Step 5: Concat bundle your_domain.ca-bundle and your_domain.crt in order with your favorite text editor

when concating, becareful of the missing new line error. This is an example of missing new line.

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

We can name concated file as ssl-bundle.crt.

After this time, there are two file that you need to bring to the nginx server.

  1. Private key file from Step 1, for example: your_domain.pem
  2. Certificate file (ssl-bundle.crt) which is a concat version of your_domain.ca-bundle and your_domain.crt in order.

Step 6: Install private key and certificate file to nginx

Before configure nginx.conf file at /etc/nginx, it’s a need to copy private key file and certificate file to /etc/ssl.

You can choose different directory, but you need to make it up to date in the nginx.conf file.

This is an example of nginx config file, the most important attribute are:

  • listen 443;
  • ssl on;
  • ssl_certificate /etc/ssl/ssl-bundle.crt;
  • ssl_certificate_key /etc/ssl/your_domain.pem;
server {

    listen 443; <----

    ssl on;     <----

    ssl_certificate /etc/ssl/ssl-bundle.crt;       <----

    ssl_certificate_key /etc/ssl/your_domain.pem;  <----

    server_name your_domain;

    access_log /var/log/nginx/nginx.vhost.access.log;

    error_log /var/log/nginx/nginx.vhost.error.log;

    location / {

        root /var/www/;

        index index.html;

    }

}

After finished editing, restart nginx server with systemctl restart nginx and enjoy.

Reference List

XMRig - config.json Template

02/06/2022 Mining Rig

# XMRig configuration file config.json
{
  "autosave": true,
  "donate-level": 0,
  "cpu": true,
  "opencl": false,
  "cuda": false,
  "pools": [
    {
      "url": "sg.minexmr.com:443",
      "user": "MONERO_ADDRESS_HERE",
      "rig-id": "2",
      "pass": "x",
      "keepalive": true,
      "tls": true
    }
  ]
}

After run the xmrig program, file named config.json will be updated with new attributes. Reopen config.json again and update attribute named 1gb-pages to true.

XMRig, Support 1GB Page on Fedora

31/05/2022 @ Saigon Mining Rig

By default, running xmrig to mine Monero will got 1GB PAGES disabled eventhough config.json has been configured.

[1] XMRig without 1GB pages supported.
[1] XMRig without 1GB pages supported.

While running xmrig, you can caught the following log.

[2021-03-15 15:14:59.732]  randomx  failed to allocate RandomX dataset using 1GB pages

The solution is to edit grub file located at /etc/default/grub with the following config:

GRUB_CMDLINE_LINUX_DEFAULT="hugepagesz=1G hugepages=3"

Then, update grub.cfg with this command and do reboot.

grub2-mkconfig -o /boot/grub2/grub.cfg

Finally, run your xmrig with sudo and enjoy!

[2] XMRig with 1GB pages supported.
[2] XMRig with 1GB pages supported.

Những 'bí ẩn' trong toán phổ thông: đạo hàm để làm gì?

26/05/2022 @ Saigon Math & Physic

Bài lược trích của thầy giáo Ngô Minh Đức dưới đây hi vọng sẽ là lời giải thích gần gũi về ý nghĩa và ứng dụng thực tiễn của đạo hàm.

Một năm sau ngày ra trường, bạn đi họp lớp và gặp lại đứa bạn ngồi cùng bàn. Quá bất ngờ vì cô bạn trở nên xinh đẹp, tự tin, khiến bạn phải thốt lên: “Mới có một năm, sao bạn thay đổi nhiều quá vậy?”.

Câu chuyện đơn giản trên đã ẩn chứa ý tưởng đạo hàm trong đó. Khi một điều gì đó thay đổi, nó có thể thay đổi nhanh hay chậm, đạo hàm sẽ cho ta biết “tốc độ thay đổi” của đại lượng đó. Nhờ ý nghĩa này, đạo hàm trở thành công cụ vô cùng quan trọng, ở bất cứ đâu có sự thay đổi, chúng ta sẽ biết được nó thay đổi như thế nào bằng đạo hàm.

Cụ thể, nếu hàm số đang tăng đạo hàm sẽ dương, tăng càng nhanh thì đạo hàm càng lớn. Ngược lại, hàm số đang giảm, đạo hàm sẽ âm và âm càng nhiều khi hàm số giảm càng nhanh.

Ở khía cạnh thực tiễn, nếu bạn là nhà kinh tế và muốn biết tốc độ tăng trưởng kinh tế nhằm đưa ra những quyết định đầu tư chứng khoán đúng đắn; nếu bạn là nhà hoạch định chiến lược, muốn có thông tin về tốc độ gia tăng dân số ở từng vùng miền; hoặc muốn xác định tốc độ phản ứng hóa học, tính toán tốc độ, gia tốc của chuyển động… Đạo hàm sẽ là thứ mà bạn cần.

Rất đơn giản! Đầu tiên bạn cần có hàm số mô tả đại lượng đang quan tâm và sau đó chỉ cần đạo hàm nó. Còn tính đạo hàm như thế nào thì sách giáo khoa đã chỉ dẫn rõ ràng và chi tiết, đơn giản hơn chúng ta có thể nhờ máy tính làm giúp.

Đạo hàm còn những ứng dụng tuyệt vời khác. Một trong số đó là tìm xem hàm số sẽ đạt được giá trị lớn nhất hay nhỏ nhất ở đâu, để từ đó tối ưu hóa các hoạt động khác nhau trong cuộc sống.

Khi một hàm số đang tăng (đạo hàm dương) rồi bất chợt chuyển sang giảm (đạo hàm âm), nó đã đi qua vị trí mà tại đó hàm số đạt giá trị cực đại và vị trí này cũng chính là nơi có đạo hàm bằng 0 (có thể có ngoại lệ nhé!). Tương tự cho trường hợp hàm số đạt được giá trị cực tiểu.

Từ nhận xét này, bằng cách tìm những chỗ mà đạo hàm bằng 0, người ta có thể biết một đại lượng sẽ đạt giá trị lớn nhất hay nhỏ nhất ở đâu để từ đó có thể tối ưu hóa nó theo mong muốn của mình.

Sử dụng đặc trưng này của đạo hàm, các công ty có thể tính được số sản phẩm nên sản xuất để đạt được lợi nhuận cao nhất. Các kĩ sư sẽ biết phải thiết kế một hộp sữa hay một lon nước ngọt như thế nào, với lượng nguyên liệu có sẵn, để có một hộp sữa chứa được nhiều sữa nhất…

Cụ thể, ta cần có hàm số mô tả lợi nhuận theo số lượng sản phẩm hoặc hàm số mô tả thể tích hộp sữa theo kích thước thiết kế. Đạo hàm sẽ giúp ta tìm xem các hàm số này đạt giá trị lớn nhất tại đâu. Đó chính là lựa chọn tối ưu cho nhà sản xuất.

Ở các sách giáo khoa nước ngoài, họ luôn nhấn mạnh cho học sinh rằng ý nghĩa quan trọng nhất của đạo hàm là cho biết tốc độ thay đổi (rate of change) của một hàm số.

Reference

Installing an Audio Card - CMI8738 on X10DRL-i with Fedora 34

08/05/2022 @ Saigon Linux

I am the owner of a motherboard named X10DRL-i from Supermicro. Regarding its specification, there is no audio component on this motherboard which means that I cannot listen to music or do voice call.

Of course, there are few tricks to output/input audio via USB components however it’s not a method that I would like to use in long term.

I really don’t want to waste an USB socket on this motherboard.

First of all, this is the motherboard layout that I rererence from Supermicro.

[1] Supermicro X10DRL-i
[1] Supermicro X10DRL-i

And this is the the audio card Cmedia CMI8738, this audio card has reached its end of life. I bought it from Shopee.

[2] Audio Card - Cmedia CMI8738
[2] Audio Card - Cmedia CMI8738

Right now, I am using a NVIDIA GeForce GTX 1060 6GB, as a consequence, I cannot test CPU 1 SLOT 5 PCI-E 3.0 X16 socket on the motherboard. Meanwhile, after testing all available sockets, there is only one socket which works, it’s PCH SLOT 1 PCI-E 2.0.

lspci gives more information.

$ lspci -nnk | grep -A3 Audio

08:00.0 Multimedia audio controller [0401]: C-Media Electronics Inc CMI8738/CMI8768 PCI Audio [13f6:0111] (rev 10)
        Subsystem: C-Media Electronics Inc CMI8738/C3DX PCI Audio Device [13f6:0111]
        Kernel driver in use: snd_cmipci
        Kernel modules: snd_cmipci

Other failed tests lead to an unknown conflict with Graphic Card. A dark blank screen with flashing cursor.

After installing the audio card on PCH SLOT 1 PCI-E 2.0. I have tested the Pink Socket - Mic In and Green Socket - Front Out. They all works flawlessly. Of course, it’s a must to configure an audio setting on Fedora 34, this is my audio setting.

[3] Audio Settings
[3] Audio Settings

In case, you wonder my server specification:

  • OS: Fedora 34 (Workstation Edition) x8
  • Kernel: 5.17.5-100.fc34.x86_64
  • Desktop Environment: GNOME 40.9
  • CPU: Intel Xeon E5-2680 v4 (56) @ 3.300GHz
  • GPU: NVIDIA GeForce GTX 1060 6GB

References:

Thiết lập thông số 170HX - Dàn #4 Huyền Vũ

28/04/2022 @ Saigon Mining Rig

I. Lời mở đầu

Bài viết này phục vụ mục đích duy nhất là đó là nếu tôi lỡ tay xóa mấy profile trên MSI Afterburner, Minerstat. Tôi sẽ quay lại đây xem.

Trong những thiết bị đào tôi đã từng có cơ hội thử qua, hai vga [1] 170HX[3] LEADTEK WinFast RTX 3080 AI BLOWER 10G trong dàn này cực kì nhạy cảm với nhiệt độ, tôi đã mod, tuy nhiên là chưa đủ. Để làm hoàn thiện sẽ cần đầu tư nhiều hơn. Ngoài ra thì [2] MSI 3080 VENTUS 10G OC (FHR) đã được tôi thay pad tản nhiệt Gelid 2mm và tra lại keo Noctua NT-H2.

Dàn Huyền Vũ
Dàn Huyền Vũ
No VGA
1 170HX
2 MSI 3080 VENTUS 10G OC (FHR)
3 LEADTEK WinFast RTX 3080 AI BLOWER 10G

II. Ethereum - 345 MH/s

a. Thiết lập với MSI Afterburner

No VGA Power Limit Temp. Limit +/- Core Clock +/- Mem Clock
1 170HX 88%
2 MSI 3080 VENTUS 10G OC (FHR) 75% (priority) 65C -502 MH/s +950 MH/s
3 LEADTEK WinFast RTX 3080 AI BLOWER 10G 70% (priority) 65C -502 MH/s 0

b. Kết quả thu được

No VGA Power Consumption Hashrate GPU Temp. Memory Temp.
1 170HX 219 Walt 163.153 MH/s 65C 84C
2 MSI 3080 VENTUS 10G OC (FHR) 239 Walt 96.726 MH/s 58C 84C
3 LEADTEK WinFast RTX 3080 AI BLOWER 10G 223 Walt 86.414 MH/s 60C 102C
           
  Total 681 Walt 346.293 MH/s
[2] Minerstat
[2] Minerstat

Thiết lập thông số 3080 - Dàn #3 Chu Tước

23/04/2022 @ Saigon Mining Rig

I. Lời mở đầu

Bài viết này phục vụ mục đích duy nhất là đó là nếu tôi lỡ tay xóa mấy profile trên MSI Afterburner, Minerstat. Tôi sẽ quay lại đây xem. Hiện tại đây là 4 VGA trực thuộc dàn #3 Chu Tước. Cả 4 VGA này đều là dòng Lite Hash Rate (LHR).

No VGA
1 MSI 3080 VENTUS 10G OC (LHR)
2 MSI 3080 VENTUS 10G OC (LHR)
3 MSI 3080 VENTUS 10G OC (LHR)
4 MSI 3080 VENTUS 10G OC (LHR)
[1] Chu Tước
[1] Chu Tước

II. Mức thiết lập - Ethereum - 95MH/s

Dàn đào Chu Tước sử dụng phần mềm NBMiner.

[2] T-rex miner
[2] T-rex miner

a. Thiết lập với Minerstat

  • Power limit (Watt): 280 Walt
  • Power limit (%): skip
  • Core Clock (-/+ MHz): skip
  • Locked Memory Clock (MHz): skip
  • Force P2 State: skip
  • ClockTune delay: 0
No VGA Locked Core -/+ Memory Clock
1 MSI 3080 VENTUS 10G OC (LHR) 1200 MH/s +1100 MH/s
2 MSI 3080 VENTUS 10G OC (LHR) 1200 MH/s +1100 MH/s
3 MSI 3080 VENTUS 10G OC (LHR) 1200 MH/s +1100 MH/s
4 MSI 3080 VENTUS 10G OC (LHR) 1200 MH/s +1100 MH/s

b. Kết quả thu được

No VGA Power Consumption Hashrate GPU Temp. Memory Temp.
1 MSI 3080 VENTUS 10G OC (LHR) 226 Walt 98.28 MH/s 62C 90C
2 MSI 3080 VENTUS 10G OC (LHR) 243 Walt 97.12 MH/s 59C 88C
3 MSI 3080 VENTUS 10G OC (LHR) 231 Walt 98.25 MH/s 58C 86C
4 MSI 3080 VENTUS 10G OC (LHR) 233 Walt 98.36 MH/s 56C 84C
           
  Total 933 Walt 392 MH/s

Tại sao mắc thêm tải mà cường độ dòng điện lại tăng lên?

13/04/2022 @ Saigon Math & Physic

Bài viết này miêu tả vấn đề về cường độ dòng điện (A) mà tôi gặp trong thực tế vì chính sự thiếu sót của tôi trong lúc lúc tính toán.

Bấy giờ, tôi đang làm việc với hai dàn đào là Chu TướcHuyền Vũ , hai cỗ máy này là hai cỗ máy đào tiền ảo với linh kiện mạnh nhất nhì thời điểm đó. Khoe khoang một chút thì Chu Tước sở hửu cho mình là 4 card 3080, và Huyền Vũ170HX. Thời điểm viết bài này là 12/4/2022, Hiện tại ở Việt Nam, gần như không có bài viết hình ảnh nào nói về card 170HX và cũng như chủ sở hữu, dân sưu tập đang khai thác. So sánh một chút với những người đào tiền mã hóa khác bên Châu Âu cũng như Mỹ, dàn Huyền Vũ có thể thua dàn khác là vì số lượng card 170HX chứ không phải là vì chất lượng linh kiện bên trong nó, 170HX thuộc nhóm linh kiện mạnh nhất thời điểm hiện tại, có lẽ chỉ thua 220HX một con quái vật có cực kì ít người sử dụng cũng như sưu tập. Và giờ thì hãy quay lại vấn đề chính.

Trong khi quan trắc hệ thống dàn đào, tôi nhận ra một điểm kì lạ.

Tại sao mỗi khi tôi tắt một trong hai dàn thì cường độ dòng điện lại giảm xuống. Theo như công thức U = I x R , giả sử khi tôi tắt một trong hai dàn, hẳn là điện trở (R) sẽ giảm xuống, kéo theo đó, Cường độ dòng điện tổng (I) sẽ phải tăng lên.

Tuy nhiên thực nghiệm thì lại khác. Mỗi khi tôi tắt một trong hai dàn đào, cường độ dòng điện tổng (I) lập tức giảm xuống, điều này làm tôi phải cân nhắc suy nghĩ, tôi chắc chắn đã sai ở đâu rồi.

Sau khi ngồi vẽ vời và lục lại công thức cùng em trai tôi (Hoàng Sơn), tôi đã nhận ra sai lầm của mình. Việc tắt một dàn đào không đồng nghĩa với việc giảm điện trở tổng (R) . Tại sao? Tại vì tôi đang mắc mạch song song.

[1] Công thức tính điện trở tổng khi mắc song song
[1] Công thức tính điện trở tổng khi mắc song song

Khi tôi mắc song song, việc tôi mắc càng nhiều điện trở song song, tôi càng làm giảm điện trở tổng đi. Theo như công thức U=I x R , khi tổng điện trở giảm xuống thì cường độ dòng điện sẽ phải tăng lên, I↑ = U / R↓ .

Điều này hoàn toàn lý giải câu hỏi của tôi bên trên đó là:

  • Tại sao khi tôi tắt dàn đào, cường độ dòng điện lại giảm xuống,
  • Tại sao khi tôi mở thêm dàn đào, cường độ dòng điện lại tăng lên.

Lý giải đơn giản nhất đó là vì tôi đã mắc song song, càng mắc nhiều điện trở song song, tổng điện trở sẽ càng giảm. Và khi tổng điện trở giảm, cường độ dòng điện tổng chắc chắn sẽ phải tăng lên.

Cách chỉ định IP sẽ bị định tuyến qua VPN

30/03/2022 Linux

Ở bài viết này, chúng ta sẽ mặc định là VPN đã được kết nối thành công. Vấn đề bây h là làm sao để quá trình định tuyến sẽ chỉ và chỉ sử dụng VPN khi bị yêu cầu đến một IP nhất định. Để hiểu rõ hơn, hãy nhìn hình minh họa sau.

[1] Mô hình network
[1] Mô hình network

Ví dụ cụ thể ở đây là máy tính của tôi muốn ping 192.168.1.200 và tôi muốn rằng chỉ có IP 192.168.1.200 là sẽ chạy qua VPN, những yêu cầu khác ví dụ như đến 192.168.1.4 sẽ không có thông qua VPN. 192.168.1.4 sẽ phải được định tuyền trong mạng nội bộ.

Để làm được điều trên, đầu tiên cần phải xác định được vpn network adapter với lệnh ifconfig. Lý do cần tìm vpn network adapter là để tìm:

  • Netmask
  • Gateway

Sau khi gõ lệnh ifconfig, vpn network adapter sẽ có thể trông như sau:

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1400
        inet 192.168.1.21  netmask 255.255.255.255  destination 192.168.1.1
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 19  bytes 1241 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 80  bytes 30120 (29.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Dựa vào thông tin trên, ta thu được:

  • Netmask: 255.255.255.255
  • Gateway: 192.168.1.1 (chính là giá trị destination)

Tiếp theo, vào Setting > Network , chọn tùy chỉnh kết nối VPN. Lưu ý phần Routes, những thông số cần chỉnh bao gồm

  • Address (192.168.1.200)
  • Netmask (255.255.255.255)
  • Gateway (192.168.1.1)
  • Tick chọn use this connection only for resources on its network

Sau khi tinh chỉnh xong, tắt và mở lại VPN. Cuối cùng là tận hưởng thành quả.

[2] VPN Routes
[2] VPN Routes

Đây là terminal trước khi tỉnh chỉnh, lúc này chưa có ping được 192.168.1.200

➜ ~ ping 192.168.1.200
PING 192.168.1.200 (192.168.1.200) 56(84) bytes of data.
From 192.168.1.5 icmp_seq=1 Destination Host Unreachable
From 192.168.1.5 icmp_seq=2 Destination Host Unreachable
From 192.168.1.5 icmp_seq=3 Destination Host Unreachable

Và đây là terminal sau khi tinh chỉnh, lúc này đã ping được 192.168.1.200

➜ ~ ping 192.168.1.200
PING 192.168.1.200 (192.168.1.200) 56(84) bytes of data.
64 bytes from 192.168.1.200: icmp_seq=1 ttl=63 time=6.52 ms
64 bytes from 192.168.1.200: icmp_seq=2 ttl=63 time=4.45 ms
64 bytes from 192.168.1.200: icmp_seq=3 ttl=63 time=4.99 ms
64 bytes from 192.168.1.200: icmp_seq=4 ttl=63 time=4.95 ms

Alephium Miner Bot

16/02/2022 Projects

Github - Alephium Miner Bot

Alephium Miner Bot is a telegram bot that sends the following messages

  • Global network hashrate
  • Current IP
  • Balance & mining reward
Telegram
Telegram

This bot is inspired by Diomark. His shell script about checking alph balance & mining time reward is really cool.

Dependencies

  • Alephium Node: 1.2.0 (if used alephium worker)
  • Kaspa Node: 0.11.9 (if use kaspa worker)
  • Erlang: 22.3
  • Elixir: 1.12

Elixir Processes

Elixir Processes
Elixir Processes

Release

Execute the following command, then project release will be generated at /alephium_miner_bot/_build/prod/rel/alephium_miner_bot

$ mix deps.get
$ MIX_ENV=prod mix release

Execute Release

Make a file named release_run.sh or copy it from release_run.sh.sample. If you download release from github release, after unzip it, you can also use this script named release_run.sh to launch the program, however beaware of your current directory.

#!/bin/bash
ALEPHIUM_WORKER=false \
ALPH_NODE_IP=127.0.0.1 \
ALPH_NODE_PORT=12973 \
ALPH_NODE_API_KEY=cf5062725e62d2096228cd6f7ab0f2a0 \
ALPH_NODE_WALLET_NAME=main \
ALPH_NODE_WALLET_PASSWORD="" \
WORKER_HASHRATE_INTERVAL=1800000 \
WORKER_IP_INTERVAL=60000 \
TELEGRAM_BOT_TOKEN=cf5062725e62d2096228cd6f7ab0f2a0 \
TELEGRAM_CHAT_ID=cf5062725e62d2096228cd6f7ab0f2a0 \
KASPA_WORKER=false \
KASPA_WALLET_PATH=/opt/kaspa/bin/kaspawallet \
_build/prod/rel/alephium_miner_bot/bin/alephium_miner_bot start

To execute the release, it’s important to provide the following parameters:

Alephium Configration:

  • ALEPHIUM_WORKER: enable/disable alephium worker, value: true/false
  • ALPH_NODE_IP: self-explained
  • ALPH_NODE_PORT: self-explained
  • ALPH_NODE_API_KEY: self-explained
  • ALPH_NODE_WALLET_NAME: self-explained
  • ALPH_NODE_WALLET_PASSWORD: self-explained
  • WORKER_HASHRATE_INTERVAL: interval in microsecond that fetching network hashrate.
  • WORKER_IP_INTERVAL: interval in microsecond that fetching IP
  • TELEGRAM_BOT_TOKEN: self-explained
  • TELEGRAM_CHAT_ID: self-explained

Kaspa Configuration:

  • KASPA_WORKER: enable/disable kaspa worker, value: true/false
  • KASPA_WALLET_PATH: path to kaspa wallet executable file

Finally, make the file release-run.sh executable and run it

# Current directory: Project Root
$ ./release_run.sh

You should see the following output on terminal.

[Worker.WorkerIP] started.
[Alephium][Worker.WorkerReward] started.
[Alephium][Worker.WorkerHashrate] started.
[Kaspa][Worker.WorkerReward] started.
2022-02-02 13:07 [Kaspa] Total Balance: 635,292.823
2022-02-02 13:07 IP: 42.112.xxx.xxx
2022-02-02 13:07 [Alephium] Global Hashrate: 27.1 TH/s
2022-02-02 13:07 [Alephium] Total Balance Hint: 0 ALPH
2022-02-02 13:07 [Kaspa] Won a block after 0.1 minute(s). Total Balance Hint: 638,292.823

And your telegram should show:

Telegram
Telegram

Donation

If you want to buy me a coffee, this is my addresses.

  • Alephium: 16ZcUrPRFafXdSjkTq5uWqkSrg6n5zwGB26pc7xrcjM7m
  • Kaspa: kaspa:qz3997w4ew30rgp8wxp2aaj5zk7ect68nnzy80fhrpw0d7fdervkw8lpwrmry

Thank you from Vietnam.