curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/ \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"address": "0xBeneficiaryWallet01", "chain": "ETH", "holder_name": "Ana Diaz", "self_declared": true}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.travel_rule.wallet_addresses.create(
address="0xBeneficiaryWallet01",
chain="ETH",
holder_vendor_data="user-042",
holder_name="Ana Diaz",
self_declared=True,
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.travelRule.walletAddresses.create({
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true,
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.TravelRule.WalletAddresses.Create(ctx, didit.WalletAddressEntryCreate{
Address: "0xBeneficiaryWallet01",
Chain: didit.String("ETH"),
HolderVendorData: didit.String("user-042"),
HolderName: didit.String("Ana Diaz"),
SelfDeclared: didit.Bool(true),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.WalletAddressEntryCreate;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.travelRule().walletAddresses().create(WalletAddressEntryCreate.builder()
.address("0xBeneficiaryWallet01")
.chain("ETH")
.holderVendorData("user-042")
.holderName("Ana Diaz")
.selfDeclared(true)
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->travelRule->walletAddresses->create([
'address' => '0xBeneficiaryWallet01',
'chain' => 'ETH',
'holder_vendor_data' => 'user-042',
'holder_name' => 'Ana Diaz',
'self_declared' => true,
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.travel_rule.wallet_addresses.create(
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.TravelRule.WalletAddresses.CreateAsync(new WalletAddressEntryCreate
{
Address = "0xBeneficiaryWallet01",
Chain = "ETH",
HolderVendorData = "user-042",
HolderName = "Ana Diaz",
SelfDeclared = true,
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"address": "<string>",
"chain": "<string>",
"holder_vendor_data": "<string>",
"holder_name": "<string>",
"entity_type": "<string>",
"is_ownership_verified": true,
"created_at": "2023-11-07T05:31:56Z",
"travel_address": "<string>",
"address_hash": "<string>",
"memo": "<string>",
"receiving_travel_address": "<string>"
}واجهة تسجيل عنوان المحفظة: دفتر عناوين Travel Rule
أضف محفظة تتحكم بها إلى دفتر عناوين Travel Rule ليتم حل التحويلات الداخلية الواردة إليها، مع إمكانية التحقق المسبق عبر الإقرار الذاتي.
curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/ \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"address": "0xBeneficiaryWallet01", "chain": "ETH", "holder_name": "Ana Diaz", "self_declared": true}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.travel_rule.wallet_addresses.create(
address="0xBeneficiaryWallet01",
chain="ETH",
holder_vendor_data="user-042",
holder_name="Ana Diaz",
self_declared=True,
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.travelRule.walletAddresses.create({
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true,
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.TravelRule.WalletAddresses.Create(ctx, didit.WalletAddressEntryCreate{
Address: "0xBeneficiaryWallet01",
Chain: didit.String("ETH"),
HolderVendorData: didit.String("user-042"),
HolderName: didit.String("Ana Diaz"),
SelfDeclared: didit.Bool(true),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.WalletAddressEntryCreate;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.travelRule().walletAddresses().create(WalletAddressEntryCreate.builder()
.address("0xBeneficiaryWallet01")
.chain("ETH")
.holderVendorData("user-042")
.holderName("Ana Diaz")
.selfDeclared(true)
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->travelRule->walletAddresses->create([
'address' => '0xBeneficiaryWallet01',
'chain' => 'ETH',
'holder_vendor_data' => 'user-042',
'holder_name' => 'Ana Diaz',
'self_declared' => true,
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.travel_rule.wallet_addresses.create(
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.TravelRule.WalletAddresses.CreateAsync(new WalletAddressEntryCreate
{
Address = "0xBeneficiaryWallet01",
Chain = "ETH",
HolderVendorData = "user-042",
HolderName = "Ana Diaz",
SelfDeclared = true,
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"address": "<string>",
"chain": "<string>",
"holder_vendor_data": "<string>",
"holder_name": "<string>",
"entity_type": "<string>",
"is_ownership_verified": true,
"created_at": "2023-11-07T05:31:56Z",
"travel_address": "<string>",
"address_hash": "<string>",
"memo": "<string>",
"receiving_travel_address": "<string>"
}التفويضات
مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console. يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير 404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع https://docs.didit.me/console/api-keys.
الجسم
عنوان المحفظة. يُخزن عنوان XRP من النوع X-address كعنوان كلاسيكي وعلامته، بحيث يطابق التحويلات التي تشير إلى أيٍّ من الصيغتين.
128رمز السلسلة (token) للعنوان، على سبيل المثال ETH أو BTC. عندما تقوم Didit بتوجيه تحويل أو تسجيله، فإنها تطابق مدخلات دفتر العناوين بناءً على عنوان المحفظة، وعندما يتضمن التحويل سلسلة، فإنها تطابق هذه القيمة أيضاً، مع تجاهل حالة الأحرف. سلسلة التحويل هي beneficiary_data.chain، وتُملأ من سلسلة العملات المشفرة للمعاملة أو رمز العملة (على سبيل المثال ETH) عندما لا ترسلها، أو chain لتسجيل ما بعد الإيداع، لذا استخدم نفس الـ token في كل مكان. المدخل ذو السلسلة الفارغة يطابق أي سلسلة. تُخزّن السلاسل المعروفة تحت معرّف قياسي واحد بغض النظر عن طريقة الكتابة التي ترسلها: يتم تخزين "ethereum" و"Ethereum" و"ERC20" جميعها كـ ETH، و"BNB Smart Chain" و"BEP20" كـ BNB، و"tron" كـ TRX. أما اسم السلسلة غير المعروف فيتم الاحتفاظ به كما قُدّم.
3225525516للكتابة فقط. عندما تكون true، يتم إنشاء الإدخال مع التحقق من ملكيته مسبقاً عبر إثبات SELF_DECLARATION. يُرجع 400 عندما يكون allow_self_declaration معطلاً في إعدادات Travel Rule الخاصة بك.
اختياري. عنوان Travel Address الخاص بـ VASP الطرف المقابل لهذه المحفظة، مما يمكّن توجيه TRP للأصول التي يدعمها TRP (وهي BTC و ETH و USDC على شبكة محددة). يؤدي إدخال Travel Address غير صالح إلى إرجاع 400.
512اختياري. وسم الوجهة (destination tag) أو المذكرة (memo) التي تشكل جزءاً من المحفظة. XRP: وسم وجهة، عدد صحيح من 0 إلى 4294967295 (يُقبل رقم JSON). XLM: مذكرة نصية تصل إلى 28 بايت، أو معرّف 64 بت أو تجزئة بطول 32 بايت بصيغة hex. EOS: حتى 256 بايت. ATOM: حتى 256 حرفاً. HBAR: حتى 100 بايت. محافظ Bitcoin وEVM وSolana وTron وLitecoin وBitcoin Cash وDogecoin وLightning لا تقبل أي مذكرة: وجود واحدة يؤدي إلى خطأ 400. الاسم المستعار: destinationTag أو destination_tag.
256الاستجابة
الإدخال الذي تم إنشاؤه.
عنوان المحفظة؛ القيمة "" لمدخل تم استيراده بواسطة التجزئة (hash) فقط. فريد لكل تطبيق وسلسلة وmemo، مع مقارنة العنوان دون مراعاة حالة الأحرف. بعد حذف أحد المدخلات، يمكنك تسجيل نفس العنوان مرة أخرى.
رمز الشبكة للعنوان، مثل ETH أو BTC. عندما تقوم Didit بتوجيه تحويل أو تسجيله، فإنها تطابق مدخلات دفتر العناوين بناءً على عنوان المحفظة، وعندما يتضمن التحويل شبكة، تطابق هذه القيمة أيضاً بغض النظر عن حالة الأحرف. شبكة التحويل هي beneficiary_data.chain، وتُملأ من شبكة العملات المشفرة للمعاملة أو رمز العملة (مثل ETH) عندما لا ترسلها بنفسك، أو من chain لتسجيل ما بعد الإيداع، لذا استخدم الرمز نفسه في كل مكان. المدخلة ذات الشبكة الفارغة تطابق أي شبكة. يُخزن المستفيد من Lightning (معرّف العقدة أو Lightning Address) المسجل على bitcoin بأحرف صغيرة تحت LIGHTNING، حيث تتم مطابقة تحويلات Lightning. يتم تخزين الشبكات المعروفة تحت معرّف معياري واحد بغض النظر عن طريقة كتابتها في الإرسال: يتم تخزين "ethereum" و"Ethereum" و"ERC20" كـ ETH، و"BNB Smart Chain" و"BEP20" كـ BNB، و"tron" كـ TRX. أما اسم الشبكة غير المعروف فيُحتفظ به كما هو وارد.
معرّفك الداخلي للحائز.
اسم صاحب المحفظة، يُستخدم لمطابقة اسم المستفيد.
نص حر، القيمة الافتراضية هي "individual".
للقراءة فقط. ما إذا كان قد تم إثبات ملكية هذا العنوان.
Travel Address الخاص بـ VASP الطرف المقابل لهذه المحفظة، إن كان معلوماً. يتيح لـ Didit توجيه تحويلات هذا المستفيد عبر مسار TRP، للأصول التي يدعمها TRP (وهي BTC وETH وUSDC على شبكة مُسمّاة).
للقراءة فقط. تجزئة SHA-256 للعنوان بالأحرف الصغيرة، بنظام hex ذي الأحرف الصغيرة. يتم مطابقة الإدخال المستورد عبر تجزئته فقط عليه.
علامة الوجهة (destination tag) أو المذكرة (memo) التي تشكل جزءًا من المحفظة على شبكة تستخدم المذكرات (XRP وXLM وEOS وATOM وHBAR)؛ القيمة "" للعنوان بأكمله. لا يطابق الإدخال الذي يحتوي على مذكرة سوى التحويلات التي تحدد تلك المذكرة؛ بينما يطابق الإدخال الذي لا يحتوي عليها العنوان بأكمله.
Travel Address الخاص بك لكل محفظة لهذه المحفظة: قدّمه إلى الـ VASP المُرسِل لكي يحدد استعلام TRP الخاص به هذه المحفظة. يكون فارغاً للمحفظة المسجلة على أنها تابعة لـ VASP آخر، وطالما أن Travel Rule معطل، وقبل حفظ ملف تعريف VASP الخاص بك.