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

Bài đăng

Hiển thị các bài đăng có nhãn Tự học lập trình web3 Solidity

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

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

Require  Solidity Ngôn ngữ lập trình Solidity. Tự học Solidity căn bản.  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 function sayHiToVitalik(string memory _name) public returns (string memory) { // Compares if _name equals "Vitalik". Throws an error and exits if no require(keccak256(abi.encodePacked(_name)) == keccak256(abi.encodePacked("Vitalik"))); // If it's true, proceed with the function: return "Hi!"; } Trong ví dụ Hợp đồng Zombie trước, chúng ta đã thực hiện một hàm cho phép người dùng tạo zombie mới bằng cách gọi createRandomZombie và nhập tên. Tuy nhiên, nếu người dùng có thể tiếp tục gọi chức năng này để tạo ra số lượng zombie không giới hạn trong đội quân của họ, thì trò chơi sẽ không vui lắm vì đất chật người đông. Giờ phải làm sao để mỗi người chơi chỉ có thể gọi chức năng này một lần. Theo cách đó người chơi mới sẽ gọi nó khi họ lần đầu tiên bắt đầu trò chơi

Tự học Solidity bài 15: Msg.sender trong ngôn ngữ lập trình Solidity

Msg.sender  Solidity 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 mapping (address => uint) favoriteNumber; function setMyNumber(uint _myNumber) public { // Update our `favoriteNumber` mapping to store `_myNumber` under `msg.sender` favoriteNumber[ msg.sender ] = _myNumber; // ^ The syntax for storing data in a mapping is just like with arrays } function whatIsMyNumber() public view returns (uint) { // Retrieve the value stored in the sender's address // Will be `0` if the sender hasn't called `setMyNumber` yet return favoriteNumber[ msg.sender ]; } msg.sender Trong Solidity, có một số biến toàn cục có sẵn cho tất cả các hàm. Một trong số đó là msg.sender , nó chính là địa chỉ của người (hoặc hợp đồng thông minh) đã gọi hàm hiện tại. Lưu ý: Trong Solidity, việc thực thi hàm luôn cần bắt đầu với một trình gọi bên ngoài. Một hợp đồng sẽ chỉ ngồi trên blockchain

Bài 14: Tài liệu tự học Solidity. Mappings và Addresses trong ngôn ngữ lập trình Solidity

Mappings & Addresses 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 mapping (address => uint) favoriteNumber; function setMyNumber(uint _myNumber) public { // Update our `favoriteNumber` mapping to store `_myNumber` under `msg.sender` favoriteNumber[msg.sender] = _myNumber; // ^ The syntax for storing data in a mapping is just like with arrays } function whatIsMyNumber() public view returns (uint) { // Retrieve the value stored in the sender's address // Will be `0` if the sender hasn't called `setMyNumber` yet return favoriteNumber[msg.sender]; } Thank you! Addresses - Địa chỉ ví Blockchain Ethereum có các tài khoản, bạn có thể coi nó giống như tài khoản ngân hàng. Một tài khoản có số dư Ether (đơn vị tiền tệ được sử dụng trên chuỗi khối Ethereum) và bạn có thể gửi và nhận các khoản thanh toán bằng Ether đến các tài khoản khác, giống như tài khoản

Bài 13: Tự học lập trình Solidity. Web3.js - Giới thiệu về thư viện Javascript Web3.js của Ethereum

Javascript Web3.js Giới thiệu về thư viện Javascript Web3.js của Ethereum. Hợp đồng về Zombie viết bằng ngôn ngữ lập trình Solidity trong ví dụ của chúng ta đã hoàn tất! Bây giờ chúng ta cần viết một giao diện người dùng javascript tương tác với hợp đồng. Ethereum có một thư viện Javascript được gọi là Web3.js. Trong bài học sau, chúng ta sẽ đi sâu hơn về cách triển khai hợp đồng và thiết lập Web3.js. Nhưng bây giờ chúng ta hãy xem một số mã mẫu để biết cách Web3.js sẽ tương tác với hợp đồng Zombie. Đừng lo lắng nếu bạn chưa hiểu hết được đoạn code này, sẽ có giải thích ở phần dưới. // Here's how we would access our contract: var abi = /* abi generated by the compiler */ var ZombieFactoryContract = web3.eth.contract( abi ) var contractAddress = /* our contract address on Ethereum after deploying */ var ZombieFactory = ZombieFactoryContract.at(contractAddress) // `ZombieFactory` has access to our contract's public functions and events // some sort of event listener to

Bài 12: Tự học lập trình Solidity. Events - Sự kiện trong ngôn ngữ lập trình Solidity

Events Solidity Sự kiện 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 //SOLIDITY event IntegersAdded(uint x, uint y, uint result); function add(uint _x, uint _y) public returns (uint) { uint result = _x + _y; // run emit IntegersAdded(_x, _y, result); return result; } //JAVASCRIPT YourContract.IntegersAdded(function(error, result) { // do something with result }) Thank you! Hợp đồng của chúng ta đã gần kết thúc! Bây giờ chúng ta nghiên cứu để thêm một sự kiện. Events - Sự kiện là một cách để hợp đồng của bạn thông báo rằng điều gì đó đã xảy ra trên blockchain đến giao diện người dùng của ứng dụng , có thể 'lắng nghe' các sự kiện và thực hiện hành động khi chúng xảy ra. Về cơ bản thì nó cũng giống như sự kiện trong các ngôn ngữ khác mà bạn đã nghiên cứu. // khai bao su kiến event IntegersAdded ( uint x, uint y, uint result ) ; function add ( uint

Bài 11: Tự học Solidity cơ bản. Bài ôn tập. Vận dụng kiến thức 10 bài đã học để đọc hiểu một Smart Contract

Ôn tập Solidity Vận dụng kiến thức 10 bài đã học để đọc hiểu một Smart Contract 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 Xin chào các bạn, như vậy là sau 10 bài học đầu tiên chúng ta đã có một lượng kiến thức cơ bản nhất về ngôn ngữ lập trình Solidity và lập trình web3 Smart Contract. Ở bài học này chúng ta dừng lại một chút để hệ thống lại những thứ mà chúng ta đã học bằng một bài ôn tập. Tôi sẽ liệt kê lại danh sách 10 bài chúng ta đã học và link trực tiếp đến bài giảng đó nếu bạn cần ôn lại. Bài giới thiệu:  Đối tượng phù hợp . Bài 1:  Contracts & Pragma . Hợp Đồng và phiên bản Pragma. Bài 2:  State Variables & Integers . Biến trạng thái & số nguyên. Bài 3:  Math Operations . Các phép toán trong Solidity. Bài 4:  Structs . Cấu trúc struct trong ngôn ngữ lập trình Solidity. Bài 5:  Arrays . Cấu trúc mảng trong ngôn ngữ lập trình Solidity. Bài 6:  Function Declarations . Khai báo hàm ngôn ngữ lập trình Solidity. Bà