caver.klay.KIP7 giúp bạn dễ dàng xử lý hợp đồng thông minh triển khai KIP-7 dưới dạng đối tượng JavaScript trên chuỗi khối Klaytn.
caver.klay.KIP7 kế thừa caver.klay.Contract để triển khai hợp đồng token KIP-7. caver.klay.KIP7 duy trì các thuộc tính giống như của caver.klay.Contract trong khi các phương pháp bổ sung để triển khai các tính năng bổ sung. Phần này chỉ giới thiệu các phương pháp liên kết mới được thêm vào của caver.klay.KIP7.
Abi và mã byte được sử dụng trong caver.klay.KIP7 đã được triển khai bằng cách sử dụng ví dụ về openzeppelin.
LƯU Ýcaver.klay.KIP7 được hỗ trợ kể từ phiên bản caver-js v1.4.0.
caver.klay.KIP7.deploy
caver.klay.KIP7.deploy(tokenInfo, deployer)
Triển khai hợp đồng token KIP-7 cho chuỗi khối Klaytn. Hợp đồng được triển khai bằng cách sử dụng caver.klay.KIP7.deploy là token có thể thay thế tuân theo tiêu chuẩn KIP-7.
Sau khi triển khai thành công, promise sẽ được giải quyết bằng phiên bản KIP7 mới.
Tham số
Tên
type
Mô tả
Đối tượng tokenInfo phải chứa các thông tin sau:
Tên
Loại
Mô tả
LƯU Ý Tham số 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 thì 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ề
PromiEvent: Bộ phát hiệu ứng kết hợp promise, được giải quyết bằng một phiên bản KIP7 mới. Ngoài ra, có thể xảy ra các sự kiện sau đây:
Ví dụ
// sử dụng promise>caver.klay.KIP7.deploy({ name:'Jasmine', symbol:'JAS', decimals:18, initialSupply:'100000000000000000000',},'0x{address in hex}').then(console.log)KIP7 {... _address:'0x598367e443D8a2b644Fec69a2C12aF44BC283f23', _jsonInterface: [... { anonymous:false, inputs: [ { indexed:true, name:'owner', type:'address' }, { indexed:true, name:'spender', type:'address' }, { indexed:false, name:'value', type:'uint256' } ], name:'Approval', type:'event', signature:'0x8c5be...' } ] }// sử dụng bộ phát hiệu ứng and promise>caver.klay.KIP7.deploy({ name:'Jasmine', symbol:'JAS', decimals:18, initialSupply:'100000',},'0x{address in hex}').on('error',function(error) { ... }).on('transactionHash',function(transactionHash) { ... }).on('receipt',function(receipt) {console.log(receipt.contractAddress) // chứa địa chỉ hợp đồng token mới}).then(function(newKIP7Instance) {console.log(newKIP7Instance.options.address) // ví dụ với địa chỉ hợp đồng token mới})
new KIP7
caver.klay.KIP7([tokenAddress]) mới
Tạo một phiên bản KIP7 mới với các phương pháp và sự kiện liên kết của nó.
Tham số
Giá trị trả về
Ví dụ
// Tạo một phiên bản KIP7 không có tham số>constkip7Instance=newcaver.klay.KIP7()// Tạo một phiên bản KIP7 với địa chỉ token>constkip7Instance=newcaver.klay.KIP7('0x{address in hex}')
kip7Instance.clone
kip7Instance.clone([tokenAddress])
Sao chép phiên bản KIP7 hiện tại.
Tham số
Giá trị trả về
Ví dụ
>constkip7Instance=newcaver.klay.KIP7(address)// Sao chép không có tham số>constcloned=kip7Instance.clone()// Sao chép với địa chỉ của hợp đồng token mới>constcloned=kip7Instance.clone('0x{address in hex}')
kip7Instance.supportsInterface
kip7Instance.supportsInterface(interfaceId)
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ố
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.
>kip7Instance.balanceOf('0x{address in hex}').then(console.log)100000
kip7Instance.allowance
kip7Instance.allowance(owner, spender)
Trả về số lượng token mà người chi tiêu được phép rút từ chủ sở hữu.
Tham số
Giá trị trả về
Promise trả về BigNumber: Số lượng token còn lại mà người chi tiêu được phép chi tiêu thay cho chủ sở hữu.
Ví dụ
>kip7Instance.allowance('0x{address in hex}','0x{address in hex}').then(console.log)0>kip7Instance.allowance('0x{address in hex}','0x{address in hex}').then(console.log)10
kip7Instance.isMinter
kip7Instance.isMinter(address)
Trả về true nếu tài khoản đã cho là người tạo token có thể phát hành token KIP7 mới.
Tham số
Giá trị trả về
Promise trả về Boolean: true nếu tài khoản là một người tạo token.
Ví dụ
>kip7Instance.isMinter('0x{address in hex}').then(console.log)true>kip7Instance.isMinter('0x{address in hex}').then(console.log)false
kip7Instance.isPauser
kip7Instance.isPauser(address)
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ố
Giá trị trả về
Promise trả về Boolean: true nếu tài khoản là trình tạm dừng.
Ví dụ
>kip7Instance.isPauser('0x{address in hex}').then(console.log)true>kip7Instance.isPauser('0x{address in hex}').then(console.log)false
kip7Instance.paused
kip7Instance.paused()
Trả về true nếu hợp đồng bị tạm dừng hoặc trả về false.
Tham số
Không có
Giá trị trả về
Promise trả về Boolean: true nếu hợp đồng bị tạm dừng.
Đặt số lượng token của chủ sở hữu token sẽ được chi tiêu bởi trình chi tiêu.
Lưu ý rằng phương pháp này sẽ gửi một giao dịch từ chủ sở hữu đến mạng lưới Klaytn, mạng này sẽ tính phí giao dịch cho chủ sở hữu.
Tham số
LƯU Ý Tham số amount chấp nhận 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 thì 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:
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 lai, hãy xem mô tả về getTransactionReceipt. Biên lai từ các phiên bản KIP7 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ụ
// Gửi qua một đối tượng sendParam với trường from đã cho>kip7Instance.approve('0x{address in hex}',10, { from:'0x{address in hex}' }).then(console.log){ blockHash:'0xf010a98f66b6b36943175cd5b249da54e84abed551cfa02846a2900ddab968c7', blockNumber:2098, contractAddress:null, from:'0x2f7dc98bd93a0544b03d6ff428a6f4ae04b32676',... trạng thái:true, to:'0x8ca777e464a83b939ae131ca037f0d8728c6929e',... events: { Approval: { address:'0x8CA777e464a83b939AE131CA037F0d8728C6929e', blockNumber:2098, transactionHash:'0xf7469c0420cb5ebb0fbf64a314bd0c9ee7517ea64dd72eefa59bc8005bbc0f99', transactionIndex:0, blockHash:'0xf010a98f66b6b36943175cd5b249da54e84abed551cfa02846a2900ddab968c7', logIndex:0, id:'log_c6ec61aa', returnValues: {'0': '0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676','1': '0xe36ffD7bc4D588c480B5925B9622881F9d85ea30','2': '10', owner:'0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676', spender:'0xe36ffD7bc4D588c480B5925B9622881F9d85ea30', value:'10' }, event:'Approval', signature:'0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925', raw: { data:'0x000000000000000000000000000000000000000000000000000000000000000a', topics: [ '0x8c5be...','0x00...676','0x00...a30' ] }, }, },}// Sử dụng kip7Instance.options.from// Nếu giá trị của kip7Instance.options.from được đặt, giá trị này được sử dụng làm giá trị mặc định// trừ khi bạn chỉ định `từ` trong đối tượng sendParam khi gửi một giao dịch với phiên bản kip7Instance.>kip7Instance.options.from ='0x{address in hex}'>kip7Instance.approve('0x{address in hex}',10).then(console.log)
Chuyển số lượng token đã cho từ số dư của chủ sở hữu token sang người nhận. Chủ sở hữu token phải tự mình thực hiện chuyển token này. Do đó, chủ sở hữu token 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 kip7Instance.options.from. Nếu không cung cấp sendParam.from hoặc kip7Instance.options.from thì sẽ xảy ra lỗi.
Lưu ý rằng việc gửi giao dịch này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
LƯU Ý Tham số amount chấp nhận 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 thì 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 lai, hãy xem mô tả về getTransactionReceipt. Biên lai từ các phiên bản KIP7 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ụ
// Gửi qua một đối tượng sendParam với trường from đã cho>kip7Instance.transfer('0x{address in hex}',10, { from:'0x{address in hex}' }).then(console.log){ blockHash:'0x8a078c3a73d678cdd85d471eb21e9ed7d695f8b96fc7315cfa59c1f68be3d2bf', blockNumber:1353, contractAddress:null, from:'0x2f7dc98bd93a0544b03d6ff428a6f4ae04b32676',... trạng thái:true, to:'0x05871c21664e18b2906545f8831695650a8f4056',... events: { Transfer: { address:'0x05871c21664E18b2906545f8831695650a8f4056', blockNumber:1353, transactionHash:'0x8bd2b21a06241e4cfc0af1ec40e7b15444f730c7529440648aa4ed6b697f08f4', transactionIndex:0, blockHash:'0x8a078c3a73d678cdd85d471eb21e9ed7d695f8b96fc7315cfa59c1f68be3d2bf', logIndex:0, id:'log_82ef7705', returnValues: {'0': '0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676','1': '0xE411cb0B61FDcC06497794fE3f49F65D5dE41f59','2': '10', from:'0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676', to:'0xE411cb0B61FDcC06497794fE3f49F65D5dE41f59', value:'10' }, event:'Transfer', signature:'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', raw: { data:'0x000000000000000000000000000000000000000000000000000000000000000a', topics: [ '0xddf25...','0x00...676','0x00...f59' ] }, }, },}// Sử dụng kip7Instance.options.from// Nếu giá trị của kip7Instance.options.from được đặt, giá trị này được sử dụng làm giá trị mặc định// trừ khi bạn chỉ định `từ` trong đối tượng sendParam khi gửi một giao dịch với phiên bản kip7Instance.>kip7Instance.options.from ='0x{address in hex}'>kip7Instance.transfer('0x{address in hex}',10).then(console.log)
Chuyển an toàn số lượng token từ số dư của chủ sở hữu token sang người nhận. Chủ sở hữu token phải tự mình thực hiện chuyển token này. Do đó, chủ sở hữu token 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 kip7Instance.options.from. Nếu không cung cấp sendParam.from hoặc kip7Instance.options.from thì 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 IKIP7Receiver.onKIP7Received. Nếu không, quá trình chuyển sẽ được hoàn nguyên.
Lưu ý rằng việc gửi giao dịch này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
LƯU Ý Tham số amount chấp nhận 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 thì 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 lai, hãy xem mô tả về getTransactionReceipt. Biên lai từ các phiên bản KIP17 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ụ
// Gửi qua một đối tượng sendParam với trường from đã cho (không có dữ liệu)>kip7Instance.safeTransfer('0x{address in hex}',10, { from:'0x{address in hex}' }).then(console.log){ blockHash:'0x208cd64b95bbd91420fc6b1a7b514a8d3051d09333d79244b6b74ff2f7f3eee4', blockNumber:2384, contractAddress:null, from:'0xc2c84328845a36fe0c4dcef370d24ec80cf85221',... trạng thái:true, to:'0xe4aeba6306b0df023aa4b765960fa59dbe925950',... events: { Transfer: { address:'0xe4AeBa6306b0Df023AA4b765960fA59dbE925950', blockNumber:2384, transactionHash:'0x47bb085947c282722c1ceab1f4f0380d911ce464a47a19f1e7bddfe08a13563d', transactionIndex:0, blockHash:'0x208cd64b95bbd91420fc6b1a7b514a8d3051d09333d79244b6b74ff2f7f3eee4', logIndex:0, id:'log_58e5e06d', returnValues: {'0': '0xC2C84328845A36Fe0c4DcEf370d24ec80cF85221','1': '0x67B092d09B5e94fed58609777cc7Ac9193553B73','2': '10', from:'0xC2C84328845A36Fe0c4DcEf370d24ec80cF85221', to:'0x67B092d09B5e94fed58609777cc7Ac9193553B73', value:'10', }, event:'Transfer', signature:'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', raw: { data:'0x000000000000000000000000000000000000000000000000000000000000000a', topics: [ '0xddf25...','0x00...221','0x00...b73' ], }, }, },}// Gửi qua một đối tượng sendParam với trường from đã cho (có dữ liệu)>kip7Instance.safeTransfer('0x{address in hex}',11,'0x1234', { from:'0x{address in hex}' }).then(console.log)// Sử dụng kip7Instance.options.from// Nếu giá trị của kip7Instance.options.from được đặt, giá trị này được sử dụng làm giá trị mặc định// trừ khi bạn chỉ định `từ` trong đối tượng sendParam khi gửi một giao dịch với phiên bản kip7Instance.>kip7Instance.options.from ='0x{address in hex}'>kip7Instance.safeTransfer('0x{address in hex}',11).then(console.log)
Chuyển số lượng token đã cho từ số dư của chủ sở hữu token sang người nhận. Địa chỉ đã được phê duyệt để gửi token của chủ sở hữu token dự kiến sẽ thực hiện giao dịch chuyển token này. Do đó, người được phê duyệt 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 kip7Instance.options.from. Nếu không cung cấp sendParam.from hoặc kip7Instance.options.from thì sẽ xảy ra lỗi.
Lưu ý rằng việc gửi giao dịch này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
LƯU Ý Tham số amount chấp nhận 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 thì 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 lai, hãy xem mô tả về getTransactionReceipt. Biên lai từ các phiên bản KIP7 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ụ
// Gửi qua một đối tượng sendParam với trường from đã cho> kip7Instance.transferFrom('0x{address in hex}', '0x{address in hex}', 10000, { from: '0x{address in hex}' }).then(console.log)
{ blockHash:'0x3adec238e06a9e8d5fa09fc1e1d7c8748b64d07e89678d27e8a379a12a34974f', blockNumber:2331, contractAddress:null, from:'0x01958c62ab4aec7fc282bec9491da0ef7f830ac2',... trạng thái:true, to:'0x3d5eb40665d25aaa4160023c4278fa6a94ba4acb',... events: { Transfer: { address:'0x3D5EB40665D25aAa4160023C4278FA6A94BA4aCb', blockNumber:2331, transactionHash:'0x5b2232b68681f19d9b6fcd6fb03964ef105912fecb772c11c8ec9fc906be4cbf', transactionIndex:0, blockHash:'0x3adec238e06a9e8d5fa09fc1e1d7c8748b64d07e89678d27e8a379a12a34974f', logIndex:0, id:'log_ae57b7a0', returnValues: {'0': '0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676','1': '0x49ff9cb8BB8CA10D7f6E1094b2Ba56c3C2DBA231','2': '10000', from:'0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676', to:'0x49ff9cb8BB8CA10D7f6E1094b2Ba56c3C2DBA231', value:'10000' }, event:'Transfer', signature:'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', raw: { data:'0x0000000000000000000000000000000000000000000000000000000000002710', topics: [ '0xddf25...','0x00...676','0x00...231' ] }, }, Approval: { address:'0x3D5EB40665D25aAa4160023C4278FA6A94BA4aCb', blockNumber:2331, transactionHash:'0x5b2232b68681f19d9b6fcd6fb03964ef105912fecb772c11c8ec9fc906be4cbf', transactionIndex:0, blockHash:'0x3adec238e06a9e8d5fa09fc1e1d7c8748b64d07e89678d27e8a379a12a34974f', logIndex:1, id:'log_cee37d26', returnValues: {'0': '0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676','1': '0x01958c62aB4aEC7fC282bEc9491dA0EF7F830AC2','2': '0', owner:'0x2f7Dc98Bd93A0544B03d6ff428a6f4ae04b32676', spender:'0x01958c62aB4aEC7fC282bEc9491dA0EF7F830AC2', value:'0' }, event:'Approval', signature:'0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925', raw: { data:'0x0000000000000000000000000000000000000000000000000000000000000000', topics: [ '0x8c5be...','0x00...676','0x00...ac2' ] }, }, },}// Sử dụng kip7Instance.options.from// Nếu giá trị của kip7Instance.options.from được đặt, giá trị này được sử dụng làm giá trị mặc định// trừ khi bạn chỉ định `từ` trong đối tượng sendParam khi gửi một giao dịch với phiên bản kip7Instance.>kip7Instance.options.from ='0x{address in hex}'>kip7Instance.transferFrom('0x{address in hex}','0x{address in hex}',10000).then(console.log)
Chuyển an toàn số lượng token từ số dư của chủ sở hữu token sang người nhận. Địa chỉ đã được phê duyệt để gửi token của chủ sở hữu token dự kiến sẽ thực hiện giao dịch chuyển token này. Do đó, người được phê duyệt 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 kip7Instance.options.from. Nếu không cung cấp sendParam.from hoặc kip7Instance.options.from thì 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 IKIP7Receiver.onKIP7Received. Nếu không, quá trình chuyển sẽ được hoàn nguyên.
Lưu ý rằng việc gửi giao dịch này sẽ tính phí giao dịch cho người gửi giao dịch.
Tham số
LƯU Ý Tham số amount chấp nhận 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 thì 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 lai, hãy xem mô tả về getTransactionReceipt. Biên lai từ các phiên bản KIP17 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ụ
// Gửi qua một đối tượng sendParam với trường from đã cho (không có dữ liệu)> kip7Instance.safeTransferFrom('0x{address in hex}', '0x{address in hex}', 10000, { from: '0x{address in hex}' }).then(console.log)
{ blockHash:'0x0d641b9cebb032f10348288623898f8aa319faa0845c5b3b7a59ac397a6a218b', blockNumber:2404, contractAddress:null, from:'0x090937f5c9b83d961da29149a3c37104bc5e71b3',... trạng thái:true, to:'0xe4aeba6306b0df023aa4b765960fa59dbe925950',... events: { Transfer: {