caver.klay.Contract
Một đối tượng caver-js được sử dụng để tương tác với một hợp đồng thông minh.
Đối tượng caver.klay.Contract
giúp dễ dàng tương tác với các hợp đồng thông minh trên blockchain Klaytn. Khi tạo một phiên bản hợp đồng mới, bạn cung cấp cho hợp đồng này giao diện JSON của hợp đồng thông minh tương ứng và caver sẽ tự động chuyển đổi tất cả lệnh gọi thành lệnh gọi ABI cấp thấp qua RPC cho bạn.
Điều này cho phép bạn tương tác với các hợp đồng thông minh như thể chúng là các đối tượng JavaScript.
hợp đồng mới
Tạo một phiên bản hợp đồng mới với tất cả các phương pháp và sự kiện được xác định trong đối tượng giao diện JSON của hợp đồng đó.
Tham số
jsonInterface
Đối tượng
Giao diện JSON để khởi tạo hợp đồng
address
Chuỗi
(tùy chọn) Địa chỉ của hợp đồng thông minh cần gọi ra. Có thể thêm sau bằng cách sử dụng myContract.options.address = '0x1234..'
tùy chọn
Đối tượng
(tùy chọn) Các tùy chọn của hợp đồng. Xem bảng dưới đây để biết thông tin chi tiết.
Đối tượng tùy chọn chứa các mục sau:
từ
Chuỗi
(tùy chọn) Địa chỉ mà từ đó các giao dịch sẽ được thực hiện.
giá gas
Chuỗi
(tùy chọn) Giá gas tính bằng peb để sử dụng cho giao dịch.
gas
Số
(tùy chọn) Lượng gas tối đa được cung cấp cho một giao dịch (hạn mức gas).
data
Chuỗi
(tùy chọn) Mã byte của hợp đồng. Được sử dụng khi hợp đồng được triển khai.
Giá trị trả về
Đối tượng
Đối tượng hợp đồng với tất cả các phương pháp và sự kiện của nó.
Ví dụ
tùy chọn
Đối tượng options
cho phiên bản hợp đồng. from
, gas
và gasPrice
được sử dụng làm giá trị dự phòng khi gửi giao dịch.
Thuộc tính
data
Chuỗi
Mã byte của hợp đồng. Được sử dụng khi hợp đồng được triển khai.
từ
Chuỗi
Địa chỉ mà từ đó các giao dịch sẽ được thực hiện.
giá gas
Chuỗi
Giá gas tính bằng peb để sử dụng cho giao dịch.
gas
Số
Lượng gas tối đa được cung cấp cho một giao dịch (hạn mức gas).
Ví dụ
options.address
Địa chỉ được sử dụng cho phiên bản hợp đồng myContract
này. Tất cả các giao dịch do caver-js tạo ra từ hợp đồng này sẽ chứa địa chỉ này dưới dạng "địa chỉ đến". Địa chỉ được lưu trữ ở dạng chữ thường.
Thuộc tính
address
Chuỗi \
null
Ví dụ
options.jsonInterface
Đối tượng giao diện JSON bắt nguồn từ ABI của hợp đồng này myContract
.
Thuộc tính
jsonInterface
Mảng
Giao diện JSON cho hợp đồng này. Đặt lại điều này sẽ tạo lại các phương pháp và sự kiện của đối tượng hợp đồng.
Ví dụ
sao chép
Sao chép phiên bản hợp đồng hiện tại.
Tham số
Không có
Giá trị trả về
Đối tượng
Phiên bản hợp đồng được sao chép mới.
Ví dụ
triển khai
Triển khai hợp đồng cho blockchain Klaytn. Sau khi triển khai thành công, promise sẽ được giải quyết bằng một phiên bản hợp đồng mới.
Tham số
options
: đối tượng tùy chọn được sử dụng cho việc triển khai:
data
Chuỗi
Mã byte của hợp đồng.
đối số
Mảng
(tùy chọn) Các đối số được chuyển đến hàm tạo khi triển khai.
Giá trị trả về
Đối tượng
: Đối tượng giao dịch:
Mảng
đối số: Các đối số được chuyển cho phương pháp trước đó. Chúng có thể được thay đổi.
Hàm
send: Sẽ triển khai hợp đồng. Promise sẽ được giải quyết với phiên bản hợp đồng mới, thay vì biên lai.
Hàm
estimateGas: Sẽ ước tính lượng gas sử dụng cho việc triển khai.
Hàm
encodeABI: Mã hóa ABI của quá trình triển khai, là dữ liệu hợp đồng + tham số hàm tạo.
Ví dụ
phương pháp
Tạo một đối tượng giao dịch cho phương pháp đó, sau đó có thể gọi, gửi, ước tính hoặc mã hóa dưới dạng ABI.
Các phương pháp của hợp đồng thông minh này có sẵn thông qua:
Tên:
myContract.methods.myMethod(123)
Tên có tham số:
myContract.methods['myMethod(uint256)'](123)
Chữ ký*:
myContract.methods['0x58cf5f10'](123)
Điều này cho phép gọi ra các hàm có cùng tên nhưng khác tham số từ phiên bản hợp đồng JavaScript.
cf) *Chữ ký hàm (Bộ chọn hàm)
Bốn byte đầu tiên của dữ liệu lệnh gọi cho một lệnh gọi hàm chỉ định hàm sẽ được gọi ra. Đây là bốn byte (left, high-order in big-endian) đầu tiên của hàm băm Keccak-256 (SHA-3) của chữ ký của hàm.
Chữ ký hàm có thể được tạo bằng 2 phương pháp khác nhau.
1. caver.klay.abi.encodeFunctionSignature('funcName(paramType1,paramType2,...)')
2. caver.utils.sha3('funcName(paramType1,paramType2,...)').substr(0, 10)
ex)
Tham số
Các tham số của bất kỳ phương pháp nào phụ thuộc vào các phương pháp hợp đồng thông minh, được xác định trong giao diện JSON.
Giá trị trả về
Đối tượng
: Đối tượng giao dịch:
Mảng
đối số: Các đối số được chuyển cho phương pháp trước đó. Chúng có thể được thay đổi.
Hàm
gọi: Sẽ gọi ra phương pháp "hằng số" và thực thi phương pháp hợp đồng thông minh của nó trong Máy ảo Klaytn mà không gửi giao dịch (không thể thay đổi trạng thái hợp đồng thông minh).
Hàm
send: Sẽ gửi một giao dịch đến hợp đồng thông minh và thực hiện phương pháp (có thể thay đổi trạng thái hợp đồng thông minh).
Hàm
estimateGas: Sẽ ước tính lượng gas được sử dụng khi phương pháp sẽ được thực thi trên blockchain.
Hàm
encodeABI: Mã hóa ABI cho phương pháp này. Điều này có thể được gửi bằng cách sử dụng một giao dịch, gọi ra phương pháp hoặc chuyển sang một phương pháp hợp đồng thông minh khác làm đối số.
Ví dụ
methods.myMethod.call
Sẽ gọi ra một phương pháp "hằng số" và thực thi phương pháp hợp đồng thông minh của nó trong Máy ảo Klaytn mà không gửi bất kỳ giao dịch nào. Lưu ý rằng việc gọi không thể thay đổi trạng thái hợp đồng thông minh.
Tham số
tùy chọn
Đối tượng
(tùy chọn) Các tùy chọn được sử dụng để gọi. Xem bảng dưới đây để biết thông tin chi tiết.
callback
Hàm
(tùy chọn) Lần gọi lại này sẽ được kích hoạt với kết quả thực thi phương pháp hợp đồng thông minh làm đối số thứ hai hoặc với một đối tượng lỗi làm đối số thứ nhất.
Đối tượng tùy chọn có thể chứa các thông tin sau:
từ
Chuỗi
(tùy chọn) Địa chỉ nơi lệnh gọi “giao dịch” được thực hiện.
giá gas
Chuỗi
(tùy chọn) Giá gas tính bằng peb để sử dụng cho lệnh gọi "giao dịch" này.
gas
Số
(tùy chọn) Lượng gas tối đa được cung cấp cho lệnh gọi "giao dịch" này (hạn mức gas).
Giá trị trả về
Promise
trả về Mixed
: Giá trị trả về(s) của phương pháp hợp đồng thông minh. Nếu trả về một giá trị duy nhất, nó sẽ được trả về như cũ. Nếu có nhiều giá trị trả về, chúng sẽ được trả về dưới dạng một đối tượng có thuộc tính và chỉ số.
Ví dụ
methods.myMethod.send
Sẽ gửi một giao dịch đến hợp đồng thông minh và thực hiện phương pháp của nó. Lưu ý rằng điều này có thể thay đổi trạng thái hợp đồng thông minh.
Tham số
tùy chọn
Đối tượng
Các tùy chọn được sử dụng để gửi. Xem bảng dưới đây để biết thông tin chi tiết.
callback
Hàm
(tùy chọn) Hàm callback này sẽ được kích hoạt trước với "transactionHash" hoặc với một đối tượng lỗi làm đối số thứ nhất.
Đối tượng tùy chọn có thể chứa các thông tin sau:
từ
Chuỗi
Địa chỉ mà từ đó giao dịch sẽ được gửi.
giá gas
Chuỗi
(tùy chọn) Giá gas tính bằng peb để sử dụng cho giao dịch này.
gas
Số
Lượng gas tối đa được cung cấp cho giao dịch này (hạn mức gas).
giá trị
Số \
Chuỗi | BN | BigNumber
Giá trị trả về
callback
sẽ trả về hàm băm giao dịch 32 byte.
PromiEvent
: Bộ phát hiệu ứng sự kiện kết hợp promise. Sẽ được giải quyết khi có biên lai giao dịch hoặc nếu send()
này được gọi ra từ someContract.deploy()
, thì promise sẽ được giải quyết với phiên bản hợp đồng mới. Ngoài ra, các sự kiện sau đây có sẵn:
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
Được kích hoạt khi biên lai giao dịch có sẵn. Biên lai từ hợp đồng sẽ không có thuộc tính nhật ký
mà thay vào đó là thuộc tính events
với tên sự kiện là khóa và sự kiện là thuộc tính. Xem giá trị trả về của getPastEvents để biết thông tin chi tiết về đối tượng sự kiện được trả về.
lỗi
Lỗi
Được kích hoạt nếu xảy ra lỗi trong quá trình gửi. Khi xảy ra lỗi hết gas, tham số thứ hai sẽ là biên lai.
Ví dụ
methods.myMethod.estimateGas
Sẽ ước tính mức gas mà việc thực thi phương pháp sẽ sử dụng khi được thực thi trong Máy ảo Klaytn. Ước tính có thể khác với gas thực tế được sử dụng khi gửi giao dịch sau này, vì trạng thái của hợp đồng thông minh có thể khác vào thời điểm đó.
Tham số
tùy chọn
Đối tượng
(tùy chọn) Các tùy chọn được sử dụng để gọi. Xem bảng dưới đây để biết thông tin chi tiết.
callback
Hàm
(tùy chọn) Hàm callback này sẽ được kích hoạt với kết quả ước tính gas làm đối số thứ hai hoặc với một đối tượng lỗi làm đối số thứ nhất.
Đối tượng tùy chọn có thể chứa các thông tin sau:
từ
Chuỗi
(tùy chọn) Địa chỉ nơi lệnh gọi "giao dịch" sẽ được thực hiện.
gas
Số
(tùy chọn) Lượng gas tối đa được cung cấp cho lệnh gọi "giao dịch" này (hạn mức gas). Đặt một giá trị cụ thể giúp phát hiện lỗi hết gas. Nếu dùng hết gas sẽ về số như cũ.
giá trị
Số \
Chuỗi | BN | BigNumber
Giá trị trả về
Promise
trả về Number
- đơn vị gas đã sử dụng cho lệnh gọi/giao dịch mô phỏng.
Ví dụ
methods.myMethod.encodeABI
Mã hóa ABI cho phương pháp này. Điều này có thể được sử dụng để gửi một giao dịch, gọi ra một phương pháp hoặc chuyển nó vào một phương pháp hợp đồng thông minh khác làm đối số.
Tham số
Không có
Giá trị trả về
Chuỗi
Mã byte ABI được mã hóa để gửi qua giao dịch hoặc cuộc gọi.
Ví dụ
một lần
Đăng ký một sự kiện và hủy đăng ký ngay sau sự kiện hoặc lỗi đầu tiên. Sẽ chỉ kích hoạt cho một sự kiện duy nhất.
Tham số
sự kiện
Chuỗi
Tên của sự kiện trong hợp đồng hoặc "allEvents"
để nhận tất cả các sự kiện.
tùy chọn
Đối tượng
(tùy chọn) Các tùy chọn được sử dụng cho việc triển khai. Xem bảng dưới đây để biết thông tin chi tiết.
callback
Hàm
Lệnh gọi lại này sẽ được kích hoạt cho sự kiện đầu tiên làm đối số thứ hai hoặc lỗi làm đối số thứ nhất. Xem giá trị trả về của getPastEvents để biết thông tin chi tiết về cấu trúc sự kiện được trả về.
Đối tượng tùy chọn có thể chứa các thông tin sau:
bộ lọc
Đối tượng
(tùy chọn) Cho phép bạn lọc các sự kiện theo thông số được lập chỉ mục, ví dụ, {bộ lọc: {myNumber: [12,13]}}
có nghĩa là tất cả các sự kiện trong đó "myNumber" là 12 hoặc 13.
chủ đề
Mảng
(tùy chọn) Điều này cho phép bạn đặt chủ đề cho bộ lọc sự kiện theo cách thủ công. Nếu được cung cấp thuộc tính bộ lọc và chữ ký sự kiện, topic[0]
sẽ không được đặt tự động.
Giá trị trả về
không xác định
Ví dụ
sự kiện
Đăng ký một sự kiện.
Tham số
tùy chọn
Đối tượng
(tùy chọn) Các tùy chọn được sử dụng cho việc triển khai. Xem bảng dưới đây để biết thông tin chi tiết.
callback
Hàm
(tùy chọn) Lệnh gọi lại này sẽ được kích hoạt cho sự kiện đầu tiên làm đối số thứ hai hoặc lỗi làm đối số thứ nhất.
Đối tượng tùy chọn có thể chứa các thông tin sau:
bộ lọc
Đối tượng
(tùy chọn) Cho phép bạn lọc các sự kiện theo thông số được lập chỉ mục, ví dụ, {bộ lọc: {myNumber: [12,13]}}
có nghĩa là tất cả các sự kiện trong đó "myNumber" là 12 hoặc 13.
fromBlock
Số
(tùy chọn) Số khối để bắt đầu sự kiện.
chủ đề
Mảng
(tùy chọn) Điều này cho phép đặt chủ đề cho bộ lọc sự kiện theo cách thủ công. Nếu được cung cấp thuộc tính bộ lọc và chữ ký sự kiện, topic[0]
sẽ không được đặt tự động.
Giá trị trả về
EventEmitter
: Trình phát sự kiện có các sự kiện sau:
data
Đối tượng
Kích hoạt từng sự kiện đến với đối tượng sự kiện làm đối số.
lỗi
Đối tượng
Kích hoạt khi xảy ra lỗi trong đăng ký.
Cấu trúc của sự kiện trả về Đối tượng
sẽ có dạng như sau:
sự kiện
Chuỗi
Tên sự kiện.
chữ ký
Chuỗi \
null
address
Chuỗi
Địa chỉ bắt nguồn từ sự kiện này.
returnValues
Đối tượng
Các giá trị trả về đến từ sự kiện, ví dụ:, {myVar: 1, myVar2: '0x234...'}
.
logIndex
Số
Giá trị nguyên chỉ vị trí chỉ mục sự kiện trong khối.
transactionIndex
Số
Số nguyên của vị trí chỉ mục giao dịch nơi sự kiện được tạo ra.
transactionHash
Chuỗi 32 byte
Hàm băm của khối mà sự kiện này đã được tạo. null
khi nó vẫn đang chờ xử lý.
blockHash
Chuỗi 32 byte
Hàm băm của khối mà sự kiện này đã được tạo. null
khi nó vẫn đang chờ xử lý.
blockNumber
Số
Số khối mà bản ghi này đã được tạo. Giá trị là null
khi bản ghi vẫn đang chờ xử lý.
raw.data
Chuỗi
Dữ liệu chứa tham số bản ghi không được lập chỉ mục.
raw.topics
Mảng
Một mảng có tối đa 4 chủ đề 32 byte, chủ đề 1-3 chứa các tham số được lập chỉ mục của sự kiện.
id
Chuỗi
Mã số định danh bản ghi. Mã định danh được tạo thông qua việc nối chuỗi "log_" với keccak256(blockHash + transactionHash + logIndex).substr(0, 8)
Ví dụ
events.allEvents
Tương tự như sự kiện nhưng nhận tất cả các sự kiện từ hợp đồng thông minh này. Theo tùy chọn, thuộc tính bộ lọc có thể lọc các sự kiện đó.
getPastEvents
Nhận các sự kiện trong quá khứ cho hợp đồng này.
Tham số
sự kiện
Chuỗi
Tên của sự kiện trong hợp đồng hoặc "allEvents"
để nhận tất cả các sự kiện.
tùy chọn
Đối tượng
(tùy chọn) Các tùy chọn được sử dụng cho việc triển khai. Xem bảng dưới đây để biết thông tin chi tiết.
callback
Hàm
(tùy chọn) Hàm callback này sẽ được kích hoạt với một mảng bản ghi sự kiện làm đối số thứ hai hoặc một lỗi làm đối số thứ nhất.
Đối tượng tùy chọn có thể chứa các thông tin sau:
bộ lọc
Đối tượng
(tùy chọn) Cho phép bạn lọc các sự kiện theo thông số được lập chỉ mục, ví dụ, {bộ lọc: {myNumber: [12,13]}}
có nghĩa là tất cả các sự kiện trong đó "myNumber" là 12 hoặc 13.
fromBlock
Số
(tùy chọn) Số khối để bắt đầu sự kiện.
toBlock
Số
(tùy chọn) Số khối để nhận các sự kiện lên đến (mặc định là "latest"
).
chủ đề
Mảng
(tùy chọn) Điều này cho phép đặt chủ đề cho bộ lọc sự kiện theo cách thủ công. Nếu được cung cấp thuộc tính bộ lọc và chữ ký sự kiện, topic[0]
sẽ không được đặt tự động.
Giá trị trả về
Promise
trả về Mảng
: Một mảng chứa các đối tượng sự kiện trong quá khứ, khớp với tên sự kiện và bộ lọc đã cho.
Ví dụ
Last updated