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

Bài đăng

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à

Bài 10: Tự học solidity cơ bản. Hàm băm Keccak256 và Typecasting - ép kiểu dữ liệu trong ngôn ngữ Solidity

Keccak256 & Typecasting Hàm băm và ép kiểu dữ liệu trong ngôn ngữ 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 //6e91ec6b618bb462a4a6ee5aa2cb0e9cf30f7a052bb467b0ba58b8748c00d2e5 keccak256(abi.encodePacked("aaaab")); //b1f078126895a1424524de5321b339ab00408010b7cf0e6ed451514981e58aa9 keccak256(abi.encodePacked("aaaac")); int8 a = 5; uint b = 6; uint8 c = a * uint8(b) ; Thank you! Hàm băm  Keccak256 Nhiệm vụ bài học này là chúng ta viết một hàm _generateRandomDna trả về một uint ngẫu nhiên. Làm thế nào chúng ta có thể thực hiện điều này? Ethereum có tích hợp hàm băm keccak256 , đây là một phiên bản của SHA3 . Một hàm băm về cơ bản ánh xạ đầu vào thành một số thập lục phân 256 bit ngẫu nhiên. Một thay đổi nhỏ trong đầu vào sẽ gây ra sự thay đổi lớn trong hàm băm. Nó hữu ích cho nhiều mục đích trong Ethereum , nhưng hiện tại trong bài học này chúng ta sẽ sử dụng nó để tạo chuỗi s