Chuyển đến nội dung chính

Bài đăng

Tự học Solidity bài 23: Xử lý hàm có nhiều giá trị trả về Multiple Return Values trong ngôn ngữ lập trình Solidity.

Multiple Return Values Xử lý hàm có nhiều giá trị trả về Multiple Return Values trong ngôn ngữ lập trình Solidity. Summary for English Visiter function multipleReturns() internal returns(uint a, uint b, uint c) { return (1, 2, 3); } function processMultipleReturns() external { uint a; uint b; uint c; // get all A,B,C (a, b, c) = multipleReturns(); } function getLastReturnValue() external { uint c; (,,c) = multipleReturns(); //only C } Thank you! Khác với các ngôn ngữ lập trình mà ta đã quen thuộc, ngôn ngữ solidity hỗ trợ nhiều giá trị trả về trong một hàm. Vậy làm cách nào để chúng ta có thể lấy được các giá trị trả về mong muốn trong một tập các dữ liệu được returns? Để trả lời cho câu hỏi này chúng ta hãy tìm hiểu bài học thứ 23 này nhé. Xử lý nhiều giá trị trả về Hàm getKitty này là ví dụ đầu tiên mà chúng tôi thấy rằng trả về nhiều giá trị. Hãy xem cách mà chúng ta lấy dữ liệu trả về của hàm: function multipleReturns ( ) internal returns ( uint a, uint b, u

Tự học Solidity bài 22: Sử dụng Interface trong ngôn ngữ lập trình Solidity

Sử dụng Interface Trong ngôn ngữ lập trình Solidity. Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity. Summary for English Visiter contract NumberInterface { function getNum(address _myAddress) public view returns (uint); } contract MyContract { address NumberInterfaceAddress = 0xab38... // Address FavoriteNumber contract on ETH blockchain NumberInterface numberContract = NumberInterface(NumberInterfaceAddress); // `numberContract` = contract FavoriteNumber function someFunction() public { // Call `getNum` from contract: uint num = numberContract.getNum(msg.sender); } } Trong bài học trước chúng ta đã biết rằng, để tương tác với một hợp đồng thông minh khác thì phải xây dựng một bộ xương hợp đồng Interface và khai báo trong đó nhưng hàm của hợp đồng mà chúng ta muốn tương tác vào nội dung Interface. Trong bài học này chúng ta sẽ học các liên kết Interface đó với hợp đồng đang có ở trên blockchain.  Sử dụng Interface Tiếp

Tự học Solidity bài 21: Tương tác với các hợp đồng khác trong ngôn ngữ lập trình Solidity

Interface Solidity Tương tác với các hợp đồng khác trong ngôn ngữ lập trình Solidity.  Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity Summary for English Visiter contract NumberInterface { function getNum(address _myAddress) public view returns (uint); } contract MyContract { address NumberInterfaceAddress = 0xab38... // Address FavoriteNumber contract on ETH blockchain NumberInterface numberContract = NumberInterface(NumberInterfaceAddress); // `numberContract` = contract FavoriteNumber function someFunction() public { // Call `getNum` from contract: uint num = numberContract.getNum(msg.sender); } } Khi chúng ta có nhu cầu tương tác với một hợp đồng khác trên Blockchain, có thể hợp đồng thuộc bạn sở hữu, hoặc là một hợp đồng có sẵn trên blockchain. Vậy với ngôn ngữ solidity chúng ta sẽ phải làm từng bước như nào? Trong bài học này chúng ta cùng tìm hiểu nhé. Tương tác với các hợp đồng khác Để hợp đồng của chúng tôi nó

Tự học Solidity bài 20: Internal và External trong ngôn ngữ lập trình Solidity

Internal & External Ngôn ngữ lập trình Solidity. Tự học Solidity miễn phí.  Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity Summary for English Visiter contract Sandwich { uint private sandwichesEaten = 0; function eat() internal { sandwichesEaten++; } } contract BLT is Sandwich { uint private baconSandwichesEaten = 0; function eatWithBacon() public returns (string memory) { baconSandwichesEaten++; // We can call this here because it's internal eat(); } } Thank you! Bạn hay mở lại 2 file  zombilefactory.sol và  zombiefeeeding.sol Nếu ta gọi hàm  _createZombie trong hàm feedAndMultiply như ví dụ dưới đây thì sẽ bị lỗi   function feedAndMultiply ( uint _zombieId , uint _targetDna ) public { require ( msg . sender == zombieToOwner [ _zombieId ]); Zombie storage myZombie = zombies [ _zombieId ]; _targetDna = _targetDna % dnaModulus ; uint newDna = ( myZombie . dna + _targetDna

Tự học Solidity bài 19: Storage & Memory trong ngôn ngữ lập trình Solidity

Storage & Memory Ngôn ngữ lập trình Solidity. Tài liệu tự học Solidity.  Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity Summary for English Visiter Sandwich[] sandwiches; function eatSandwich(uint _index) public { // So instead, you should declare with the ` storage ` keyword Sandwich storage mySandwich = sandwiches[_index]; mySandwich.status = "Eaten!"; // If you just want a copy, you can use ` memory `: Sandwich memory anotherSandwich = sandwiches[_index + 1]; anotherSandwich.status = "Eaten!"; sandwiches[_index + 1] = anotherSandwich; } Thank you! Vị trí dữ liệu Trong Solidity, có hai vị trí bạn có thể lưu trữ các biến - trong bộ lưu trữ Storage và trong bộ nhớ Memory . Storage  trỏ đến các biến được lưu trữ vĩnh viễn trên blockchain .  Memory là các biến là tạm thời và bị xóa giữa các lệnh gọi hàm. Có thể hình dung nó giống như lưu trữ dư liệu trong ổ đĩa cứng và  RAM .

Tự học Solidity bài 18: Import trong ngôn ngữ lập trình Solidity

Import  Solidity  Ngôn ngữ lập trình Solidity. Tự học Solidity miễn phí.  Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity Summary for English Visiter pragma solidity >=0.5.0 <0.6.0; import "./zombiefactory.sol"; contract ZombieFeeding is ZombieFactory { } Thank you! Bạn hay xem 2 file Solidity dưới đây 1 File: zombilefactory.sol pragma solidity >= 0.5.0 < 0.6.0 ; contract ZombieFactory { event NewZombie ( uint zombieId , string name , uint dna ); uint dnaDigits = 16 ; uint dnaModulus = 10 ** dnaDigits ; struct Zombie { string name ; uint dna ; } Zombie [] public zombies ; mapping ( uint => address ) public zombieToOwner ; mapping ( address => uint ) ownerZombieCount ; function _createZombie ( string memory _name , uint _dna ) private { uint id = zombies . push ( Zombie ( _name , _dna )) - 1 ; zombieToOwner [ id

Tự học Solidity bài 17: Inheritance Kế thừa trong ngôn ngữ lập trình Solidity

Inheritance  Solidity Kế thừa trong ngôn ngữ lập trình Solidity. Tài liệu tự học Solidity Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity Summary for English Visiter contract Doge { function catchphrase() public returns (string memory) { return "So Wow CryptoDoge"; } } contract BabyDoge is Doge { function anotherCatchphrase() public returns (string memory) { return "Such Moon BabyDoge"; } } Thank you! Mã contract của chúng ta khá dài rồi. Thay vì tạo một hợp đồng cực kỳ dài thì bạn nên chia code hợp đồng của mình thành nhiều hợp đồng để code được tổ chức một cách khoa học và dễ bảo trì. Ngôn ngữ Solidity cũng cho phép ta kế thừa hợp đồng giống như các ngôn ngữ hướng đối tượng khác. Bạn có thể hiểu ngay cách kế thừa trong Solidity với ví dụ dưới dây: contract Doge { function catchphrase ( ) public returns ( string memory ) { return "So Wow CryptoDoge" ; } } contract BabyDoge is D