caver.kct.kip37
caver.kct.kip37
giúp bạn dễ dàng xử lý hợp đồng thông minh triển khai KIP-37 dưới dạng đối tượng JavaScript trên nền tảng chuỗi khối Klaytn (Klaytn).
caver.kct.kip37
kế thừa caver.contract để triển khai hợp đồng token KIP-37. caver.kct.kip37
chứa các thuộc tính giống như của caver.contract
trong khi các phương pháp bổ sung được triển khai cho các tính năng bổ sung. Phần này chỉ giới thiệu các phương pháp mới được thêm vào của caver.kct.kip37
.
Mã triển khai KIP-37 cho caver-js hiện có trên Klaytn Contracts Github Repo. KIP-37 cho caver-js hỗ trợ giao diện Ownable. Sử dụng giao diện này, bạn có thể chỉ định chủ sở hữu hợp đồng khi triển khai hợp đồng
Để biết thêm thông tin về KIP-37, hãy xem Đề xuất cải tiến Klaytn.
LƯU Ý caver.kct.kip37
được hỗ trợ kể từ caver-js v1.5.7.
caver.kct.kip37.deploy
Triển khai hợp đồng token KIP-37 cho chuỗi khối Klaytn. Hợp đồng được triển khai bằng cách sử dụng caver.kct.kip37.deploy là một đa token tuân theo tiêu chuẩn KIP-37.
Sau khi triển khai thành công, promise sẽ được giải quyết bằng phiên bản KIP37 mới.
Tham số
tokenInfo
đối tượng
Thông tin cần thiết để triển khai hợp đồng token KIP-37 trên chuỗi khối Klaytn. Xem bảng dưới đây để biết thông tin chi tiết.
trình triển khai
chuỗi | đối tượng
Đối tượng tokenInfo phải chứa các thông tin sau:
uri
chuỗi
Giá trị trả về
PromiEvent
: Bộ phát sự kiện kết hợp promise, được giải quyết bằng một phiên bản KIP37 mới. Ngoài ra, có thể xảy ra các sự kiện sau đây:
transactionHash
chuỗi
Được kích hoạt ngay sau khi giao dịch được gửi và có sẵn hàm băm giao dịch.
biên lai
đối tượng
lỗi
Lỗi
Được kích hoạt nếu xảy ra lỗi trong quá trình gửi.
Đăng ký token
Để đăng ký token trên trình khám phá khối, người tạo hợp đồng phải điền vào biểu mẫu yêu cầu gửi. Ghi lại các thông tin cụ thể được yêu cầu trên biểu mẫu.
Môi trường hợp đồng thông minh
Loại trình biên dịch: Solidity
Phiên bản trình biên dịch: v0.8.4+commit.c7e474f2
Loại giấy phép mã nguồn mở: MIT
Chi tiết hợp đồng thông minh
Tối ưu hóa: --optimize-run 200
Mã nguồn: Liên kết Github hợp đồng KIP37.
Giá trị được mã hóa ABI: kip37JsonInterface tại dev · klaytn/caver-js · GitHub
Ví dụ
caver.kct.kip37.detectInterface
Trả về thông tin của giao diện được triển khai bởi hợp đồng token. Hàm tĩnh này sẽ sử dụng kip37.detectInterface.
Tham số
contractAddress
chuỗi
Địa chỉ của hợp đồng token KIP-37
Giá trị trả về
Promise
trả về một đối tượng
chứa kết quả với các giá trị boolean cho dù từng giao diện KIP-37 có được triển khai hay không.
Ví dụ
caver.kct.kip37.create
Tạo một phiên bản KIP37 mới với các phương pháp và sự kiện liên kết của nó. Hàm này hoạt động tương tự như KIP37 mới.
LƯU Ý caver.kct.kip37.create
được hỗ trợ kể từ caver-js v1.6.1.
Tham số
Xem KIP37 mới .
Giá trị trả về
Xem KIP37 mới .
Ví dụ
kIP37 mới
Tạo một phiên bản KIP37 mới với các phương pháp và sự kiện liên kết của nó.
Tham số
tokenAddress
chuỗi
(tùy chọn) Địa chỉ của hợp đồng mã thông báo KIP-37, có thể được chỉ định sau thông qua kip37.options.address = '0x1234..'
Giá trị trả về
đối tượng
Phiên bản KIP37 với các phương pháp và sự kiện liên kết của nó.
Ví dụ
kip37.clone
Sao chép phiên bản KIP37 hiện tại.
Tham số
tokenAddress
chuỗi
(tùy chọn) Địa chỉ của hợp đồng thông minh đã triển khai token KIP37- khác. Nếu bị bỏ qua, nó sẽ được đặt thành địa chỉ hợp đồng trong trường hợp ban đầu.
Giá trị trả về
đối tượng
Bản sao của phiên bản KIP37 ban đầu.
Ví dụ
kip37.detectInterface
Trả về thông tin của giao diện được triển khai bởi hợp đồng token.
Tham số
Không có
Giá trị trả về
Promise
trả về một đối tượng
chứa kết quả với các giá trị boolean cho dù từng giao diện KIP-37 có được triển khai hay không.
Ví dụ
kip37.supportsInterface
Trả về true
nếu hợp đồng này triển khai giao diện được xác định bởi interfaceId
.
Tham số
interfaceId
chuỗi
InterfaceId cần được kiểm tra.
Giá trị trả về
Promise
trả về boolean
: true
nếu hợp đồng này triển khai giao diện được xác định bởi interfaceId
.
Ví dụ
kip37.uri
Trả về Mã định danh tài nguyên thống nhất (URI) riêng biệt của token đã cho.
Nếu chuỗi "{id}" tồn tại trong bất kỳ URI nào, hàm này sẽ thay thế chuỗi này bằng ID token thực ở dạng thập lục phân. Vui lòng tham khảo Siêu dữ liệu KIP-34.
Tham số
id
BigNumber | chuỗi | số
Id token để nhận uri.
LƯU Ý Tham số id
chấp nhận loại số
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn bởi number.MAX_SAFE_INTEGER, điều đó có thể gây ra kết quả không mong muốn hoặc lỗi. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Giá trị trả về
Promise
trả về chuỗi
: Uri của token.
Ví dụ
kip37.totalSupply
Trả về tổng nguồn cung token của token cụ thể.
Tham số
id
BigNumber | chuỗi | số
Id token để xem tổng nguồn cung.
LƯU Ý Tham số id
chấp nhận loại số
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn bởi number.MAX_SAFE_INTEGER, điều đó có thể gây ra kết quả không mong muốn hoặc lỗi. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Giá trị trả về
Promise
trả về BigNumber
: Tổng số token.
Ví dụ
kip37.balanceOf
Trả về số lượng token loại token id
thuộc sở hữu của tài khoản
.
Tham số
tài khoản
chuỗi
Địa chỉ của tài khoản mà bạn muốn xem số dư.
id
BigNumber | chuỗi | số
Id token để xem số dư.
LƯU Ý Tham số id
chấp nhận loại số
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn bởi number.MAX_SAFE_INTEGER, điều đó có thể gây ra kết quả không mong muốn hoặc lỗi. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Giá trị trả về
Promise
trả về BigNumber
: Số lượng token mà tài khoản đó có.
Ví dụ
kip37.balanceOfBatch
Trả về số dư của nhiều cặp tài khoản/token. balanceOfBatch
là hoạt động hàng loạt của balanceOf và độ dài của các mảng có tài khoản
và id
phải giống nhau.
Tham số
tài khoản
Mảng
Địa chỉ của tài khoản mà bạn muốn xem số dư.
id
Mảng
Một mảng id token để xem số dư.
Giá trị trả về
Promise
trả về Mảng
: Số dư của nhiều cặp tài khoản/token.
Ví dụ
kip37.isMinter
Trả về true
nếu tài khoản đã cho là người tạo có thể phát hành token KIP37 mới.
Tham số
address
chuỗi
Địa chỉ của tài khoản cần kiểm tra xem có quyền tạo hay không.
Giá trị trả về
Promise
trả về boolean
: true
nếu tài khoản là một thợ đào.
Ví dụ
kip37.isPauser
Trả về true
nếu tài khoản đã cho là người tạm dừng có thể tạm dừng chuyển token.
Tham số
address
chuỗi
Địa chỉ của tài khoản đã được kiểm tra để có quyền tạm dừng chuyển token.
Giá trị trả về
Promise
trả về Boolean
: true
nếu tài khoản là trình tạm dừng.
Ví dụ
kip37.paused
Trả về liệu giao dịch của hợp đồng token (hoặc token cụ thể) có bị tạm dừng hay không.
Nếu tham số id không được xác định, hãy trả về xem giao dịch của hợp đồng token có bị tạm dừng hay không. Nếu tham số id được xác định, hãy trả về xem token cụ thể có bị tạm dừng hay không.
Tham số
id
BigNumber | chuỗi | số
(tùy chọn) Id token để kiểm tra thời tiết có bị tạm dừng hay không. Nếu tham số này bị bỏ qua, hàm paused
trả về liệu hợp đồng có ở trạng thái tạm dừng hay không.
LƯU Ý Tham số id
chấp nhận loại số
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn bởi number.MAX_SAFE_INTEGER, điều đó có thể gây ra kết quả không mong muốn hoặc lỗi. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Giá trị trả về
Promise
trả về boolean
: true
nếu hợp đồng (hoặc mã thông báo cụ thể) bị tạm dừng.
Ví dụ
kip37.isApprovedForAll
Truy vấn trạng thái phê duyệt của một người vận hành cho một chủ sở hữu nhất định. Trả về true
nếu người vận hành được chủ sở hữu nhất định chấp thuận.
Tham số
chủ sở hữu
chuỗi
Địa chỉ của chủ sở hữu.
người vận hành
chuỗi
Địa chỉ của người vận hành.
Giá trị trả về
Promise
trả về boolean
: Đúng nếu người vận hành chấp thuận, sai nếu không
Ví dụ
kip37.create
Tạo một loại token mới và chỉ định initialSupply
cho người tạo.
Lưu ý rằng phương pháp này sẽ gửi một giao dịch đến mạng lưới Klaytn, mạng này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
id
BigNumber | chuỗi | số
Id token để tạo.
initialSupply
BigNumber | chuỗi | số
Số lượng token được tạo.
uri
chuỗi
(tùy chọn) URI token của token đã tạo.
sendParam
đối tượng
(tùy chọn) Một đối tượng chứa các tham số cần thiết để gửi giao dịch.
LƯU Ý Các tham số id
, initialSupply
chấp nhận loại number
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn bởi number.MAX_SAFE_INTEGER, nó có thể gây ra lỗi hoặc kết quả không mong muốn. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Đối tượng sendParam
chứa các thông tin sau:
từ
chuỗi
(tùy chọn) Địa chỉ mà giao dịch sẽ được gửi từ đó. Nếu bỏ qua tham số này thì sẽ được thiết lập bởi kip37.options.from
. Nếu không cung cấp from
trong đối tượng sendParam
cũng như kip37.options.from
thì sẽ xảy ra lỗi.
gas
số | chuỗi
(tùy chọn) Lượng gas tối đa được cung cấp cho giao dịch này (giới hạn gas). Nếu bị bỏ qua, nó sẽ được thiết lập bởi caver-js bằng cách gọi kip37.methods.approve(spender,mount).estimateGas({from})
.
giá gas
số | chuỗi
(tùy chọn) Giá gas tính bằng peb cho giao dịch này. Nếu bị bỏ qua, nó sẽ được thiết lập bởi caver-js bằng cách gọi caver.klay.getGasPrice
.
giá trị
Số | Chuỗi | BN | Số lớn
(tùy chọn) Giá trị được chuyển trong peb.
feeDelegation
boolean
(tùy chọn, mặc định sai
) Có sử dụng giao dịch ủy thác phí hay không. Nếu bỏ qua, kip37.options.feeDelegation
sẽ được sử dụng. Nếu cả hai bị bỏ qua, ủy thác phí không được sử dụng.
feePayer
chuỗi
(tùy chọn) Địa chỉ của người trả phí thanh toán phí giao dịch. Khi feeDelegation
là đúng
, giá trị sẽ được đặt thành trường feePayer
trong giao dịch. Nếu bỏ qua, kip37.options.feePayer
sẽ được sử dụng. Nếu cả hai bị bỏ qua, sẽ đưa ra một lỗi.
feeRatio
chuỗi
(tùy chọn) Tỷ lệ phí giao dịch mà người trả phí sẽ phải chịu. Nếu feeDelegation
là đúng
và feeRatio
được đặt thành giá trị hợp lệ thì giao dịch ủy thác phí một phần sẽ được sử dụng. Khoảng hợp lệ là từ 1 đến 99. Tỷ lệ không được phép bằng 0 hoặc bằng và cao hơn 100. Nếu bỏ qua, kip37.options.feeRatio
sẽ được sử dụng.
LƯU Ý feeDelegation
, feePayer
và feeRatio
được hỗ trợ kể từ phiên bản caver-jsv1.6.1.
Giá trị trả về
Promise
trả về đối tượng
- Biên lai chứa kết quả thực hiện giao dịch. Nếu bạn muốn biết về các thuộc tính bên trong đối tượng biên nhận, hãy xem mô tả của getTransactionReceipt. Biên lai từ các phiên bản KIP37- có thuộc tính 'sự kiện' được phân tích cú pháp qua ABI thay vì thuộc tính 'bản ghi'.
Ví dụ
kip37.setApprovalForAll
Cho phép hoặc không cho phép một người vận hành chuyển tất cả token của chủ sở hữu.
Lưu ý rằng phương pháp này sẽ gửi một giao dịch đến mạng lưới Klaytn, mạng này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
người vận hành
chuỗi
Địa chỉ của tài khoản được phê duyệt/cấm chuyển tất cả các token của chủ sở hữu.
chấp thuận
boolean
Người vận hành này sẽ được phê duyệt nếu true
. Người vận hành sẽ không được phép nếu false
.
sendParam
đối tượng
Giá trị trả về
Promise
trả về đối tượng
- Biên lai chứa kết quả thực hiện giao dịch. Nếu bạn muốn biết về các thuộc tính bên trong đối tượng biên nhận, hãy xem mô tả của getTransactionReceipt. Biên lai từ các phiên bản KIP37- có thuộc tính 'sự kiện' được phân tích cú pháp qua ABI thay vì thuộc tính 'bản ghi'.
Ví dụ
kip37.safeTransferFrom
Chuyển token một cách an toàn số lượng
đã cho của loại token cụ thể id
từ từ
sang người nhận
.
Địa chỉ được ủy quyền để gửi token của chủ sở hữu token (người vận hành) hoặc chính chủ sở hữu token sẽ thực hiện giao dịch chuyển token này. Do đó, địa chỉ được ủy quyền hoặc chủ sở hữu token phải là người gửi giao dịch này có địa chỉ phải được cung cấp tại sendParam.from
hoặc kip37.options.from
. Trừ khi cả sendParam.from
và kip37.options.from
đều được cung cấp, nếu không sẽ xảy ra lỗi.
Nếu người nhận là một địa chỉ hợp đồng, thì địa chỉ đó phải triển khai IKIP37Receiver.onKIP37Received. Nếu không, quá trình chuyển sẽ được hoàn nguyên.
Lưu ý rằng phương pháp này sẽ gửi một giao dịch đến mạng lưới Klaytn, mạng này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
từ
chuỗi
Địa chỉ của tài khoản sở hữu token sẽ được gửi với cơ chế trợ cấp.
người nhận
chuỗi
Địa chỉ tài khoản nhận token.
id
BigNumber | chuỗi | số
Id token để chuyển.
số lượng
BigNumber | chuỗi | số
Số lượng token bạn muốn chuyển.
data
Bộ đệm | chuỗi | số
(tùy chọn) Dữ liệu tùy chọn để gửi cùng với cuộc gọi.
sendParam
đối tượng
LƯU Ý Các tham số id
và số lượng
chấp nhận loại number
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn number.MAX_SAFE_INTEGER, nó có thể gây ra lỗi hoặc kết quả không mong muốn. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Giá trị trả về
Promise
trả về đối tượng
- Biên lai chứa kết quả thực hiện giao dịch. Nếu bạn muốn biết về các thuộc tính bên trong đối tượng biên nhận, hãy xem mô tả của getTransactionReceipt. Biên lai từ các phiên bản KIP37- có thuộc tính 'sự kiện' được phân tích cú pháp qua ABI thay vì thuộc tính 'bản ghi'.
Ví dụ
kip37.safeBatchTransferFrom
Chuyển hàng loạt an toàn nhiều id và giá trị token từ từ
sang người nhận
.
Địa chỉ đã được phê duyệt để gửi token của chủ sở hữu (người vận hành) hoặc chính chủ sở hữu token sẽ thực hiện giao dịch chuyển token này. Do đó, địa chỉ được duyệt hoặc chủ sở hữu token phải là người gửi giao dịch này có địa chỉ phải được cung cấp tại sendParam.from
hoặc kip37.options.from
. Trừ khi cả sendParam.from
và kip37.options.from
đều được cung cấp, nếu không sẽ xảy ra lỗi.
Nếu người nhận là một địa chỉ hợp đồng, thì địa chỉ đó phải triển khai IKIP37Receiver.onKIP37Received. Nếu không, quá trình chuyển sẽ được hoàn nguyên.
Lưu ý rằng phương pháp này sẽ gửi một giao dịch đến mạng lưới Klaytn, mạng này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
từ
chuỗi
Địa chỉ của tài khoản sở hữu token sẽ được gửi với cơ chế trợ cấp.
người nhận
chuỗi
Địa chỉ tài khoản nhận token.
id
Mảng
Một mảng id token để chuyển.
số lượng
Mảng
Một mảng số lượng token bạn muốn chuyển.
data
Bộ đệm | chuỗi | số
(tùy chọn) Dữ liệu tùy chọn để gửi cùng với cuộc gọi.
sendParam
đối tượng
LƯU Ý Các tham số mảng ids
và số lượng
chấp nhận loại số
làm phần tử trong mảng, nhưng nếu giá trị được cung cấp là nằm ngoài phạm vi được giới hạn bởi number.MAX_SAFE_INTEGER, điều này có thể gây ra lỗi hoặc kết quả không mong muốn. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
Giá trị trả về
Promise
trả về đối tượng
- Biên lai chứa kết quả thực hiện giao dịch. Nếu bạn muốn biết về các thuộc tính bên trong đối tượng biên nhận, hãy xem mô tả của getTransactionReceipt. Biên lai từ các phiên bản KIP37- có thuộc tính 'sự kiện' được phân tích cú pháp qua ABI thay vì thuộc tính 'bản ghi'.
Ví dụ
kip37.mint
Tạo token của loại token cụ thể id
và chỉ định token theo các biến đến
và giá trị
. Hàm tạo cho phép bạn tạo token cụ thể cho nhiều tài khoản cùng một lúc bằng cách chuyển các mảng đến đến
và giá trị
làm tham số.
Lưu ý rằng phương pháp này sẽ gửi một giao dịch đến mạng lưới Klaytn, mạng này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
đến
chuỗi | Mảng
Địa chỉ của tài khoản hoặc một dãy địa chỉ mà token tạo sẽ được phát hành.
id
BigNumber | chuỗi | số
Id token để tạo.
giá trị
BigNumber | chuỗi | số | Mảng
Số lượng token sẽ được tạo. Nếu một mảng chứa nhiều địa chỉ được gửi đến tham số to
, giá trị phải được gửi ở dạng mảng.
sendParam
đối tượng
LƯU Ý Các tham số id
và value
chấp nhận loại number
nhưng nếu giá trị được cung cấp nằm ngoài phạm vi được giới hạn number.MAX_SAFE_INTEGER, nó có thể gây ra lỗi hoặc kết quả không mong muốn. Trong trường hợp này, bạn nên sử dụng loại BigNumber
, đặc biệt đối với giá trị đầu vào dạng số có kích thước uint256
.
LƯU Ý Nếu sendParam.from
hoặc kip37.options.from
được cung cấp, thì đó phải là một người tạo với MinterRole.
Giá trị trả về
Promise
trả về đối tượng
- Biên lai chứa kết quả thực hiện giao dịch. Nếu bạn muốn biết về các thuộc tính bên trong đối tượng biên nhận, hãy xem mô tả của getTransactionReceipt. Biên lai từ các phiên bản KIP37- có thuộc tính 'sự kiện' được phân tích cú pháp qua ABI thay vì thuộc tính 'bản ghi'.
Ví dụ