Gửi bài viết tới BigCoin

Hướng dẫn cho người mới bắt đầu học lập trình ứng dụng Blockchain

Đăng bởi: Charlotte  - 30/05/2018 - 6445 lượt xem
Chia sẻ
 

Tôi đã có rất nhiều câu hỏi về cách hoạt động của nền tảng Blockchain. Điều quan trọng là "Làm thế nào đểl ập trình ứng dụng blockchain và xây dựng các ứng dụng trên nó?". Phải mất một vài tuần đào bới, đọc và thử nghiệm để cuối cùng có được nó. Tôi không thể tìm thấy hướng dẫn ngắn nhưng toàn diện. Bây giờ, sau khi có một số hiểu biết tốt, tôi nghĩ đến việc viết một cái  gì đó có thể giúp đỡ người khác. Đây là một hướng dẫn ngắn gọn về lập trình blockchain, tôi đã chỉ giữ những phần quan trọng để giảm sự phức tạp.

1. Mục đích của Blockchain cũng như lập trình Blockchain?

Roopa sống ở một trong những vùng hẻo lánh của Delhi. Chính phủ Ấn Độ đã phân bổ ít tài nguyên lương thực mỗi tháng. Vì cô ấy thuộc nhóm BPL (Dưới mức nghèo). Chính phủ sử dụng một người trung gian để phân phối các nguồn thực phẩm này. Chỉ một phần ba nguồn thực phẩm được phân bổ tiếp cận những người như Roopa, phần còn lại được bán bởi người trung gian vì lợi nhuận.

Sara viết sách hư cấu, cô xuất bản chúng trên Amazon. Cô ấy buồn vì Amazon chiếm 50% doanh số bán hàng là hoa hồng. Điều đó không công bằng bởi vì cô ấy đã một mình  nỗ lực viết và tiếp thị.

Vấn đề là trung gian đi đôi với quyền lực và tiền bạc. Phương châm của họ là "lợi nhuận bằng mọi giá", để hỗ trợ các nhà sản xuất và trao quyền cho người nghèo, chúng ta cần những người trung gian hành động theo đạo đức. Điều đó gần như không thể đạt được, nhưng nếu chúng ta có thể thay thế người trung gian bằng một hệ thống tự động thì sao?

Vì máy tính không có thành kiến nên chúng không cần tiền hoặc điện. Đây có thể là suy nghĩ của Satoshi Namakato khi ông phát minh ra bitcoin sử dụng công nghệ blockchain trong năm 2008.

2. Blockchain được phát minh như thế nào?

Tiền đã phát triển theo thời gian, mỗi một cuộc cải cách sẽ làm giảm chi phí sản xuất và làm cho giao dịch của họ thuận tiện hơn. Tiền vàng là tốn kém để sản xuất. Việc phát minh tiền giấy đã giải quyết vấn đề này. Tuy nhiên, sau khi phát minh ra máy tính và internet, mọi người tìm thấy một cách tốt hơn để thực hiện giao dịch thuận tiện và nhanh hơn.

Để đảm bảo giữ được các khoản thu nhập an toàn suốt cả đời và tạo điều kiện thuận lợi cho các giao dịch số, chúng tôi cần một người trung gian (ngân hàng). Điều này làm cho các ngân hàng  trở nên quan trọng, họ có thể áp đặt một khoản phí nặng nề trên các giao dịch rút tiền, bán thông tin cá nhân của chúng ta, v.v ...

Các ngân hàng thiếu tiền đã gây ra khủng hoảng tài chính năm 2008. Các ngân hàng không tôn trọng quyền riêng tư của khách hàng. Hệ thống an ninh yếu của họ đã dẫn đến gian lận kỹ thuật số.

Sự tiến hóa tiếp theo của tiền phải giải quyết các vấn đề sau.

  1. Nó không nên được lưu trữ với một thực thể trung ương.
  2. Nó cần phải được bảo mật cao.
  3. Nó phải đảm bảo sự riêng tư.

Vì tiền tệ fiat được kiểm soát bởi chính phủ, Satoshi không có lựa chọn nào khác ngoài việc phát minh ra một loại tiền tệ mới (tiền mã hóa Bitcoin). Ông giải quyết những vấn đề này với sự giúp đỡ của các mạng peer-to-peer và cryptography.

3. Decentralisation trong lập trình Blockchain

 

Torrents sử dụng công nghệ peer-to-peer để chia sẻ tập tin. Ứng dụng torrent không tải xuống tệp từ máy chủ trung tâm hoặc máy tính đơn lẻ, thay vào đó, nó kết nối với những người trong mạng của mình, tìm ra ai có tệp và tải tệp xuống từ máy tính của họ.

Bạn nhận được các phần của một tập tin từ các máy tính khác nhau trên toàn thế giới. Nếu một người trong mạng biến mất, nội dung tải xuống của bạn sẽ không bị ảnh hưởng bởi vì có những người khác có thể chia sẻ tệp.

Satoshi đã áp dụng công nghệ này vì nó lưu trữ tiền một cách phi tập trung. Không một thực thể nào có quyền kiểm soát nó.

4. Lập trình Blockchain với Cryptography

Trong cryptography, người ta có thể ký điện tử một tin nhắn. Để làm được điều này, chúng ta cần  ba điều đó là một khóa công khai, khóa riêng và tin nhắn.

Khóa công khai và khóa riêng là một tập hợp các ký tự dài được kết nối toán học. Khóa công khai được công khai như tên người dùng của bạn và khóa riêng là bí mật như mật khẩu của bạn.

Tin nhắn là thông tin bạn muốn ủy quyền, ví dụ: “Tôi cho phép bạn thanh toán cho John 100 đô la”.

Nếu bạn nhập thuật toán bằng khóa công khai, khóa riêng và tin nhắn. Thuật toán mã hóa sẽ tạo ra một chữ ký. Đó là một bộ ký tự khác duy nhất cho nội dung của thông điệp đó.

5. Public Key với lập trình Blockchain


-----BEGIN EC PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE50uE+YSxqDgMkFByhpcgTVqXCqHO h68Ljt1z0jklDff/WV7xo+U6o3REBtK/C0/LM+Ef3FB3wR9aXMGNMLb9EA== -----END EC PUBLIC KEY-----Private Key
-----BEGIN EC PRIVATE KEY----- MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgwqIsXl9FqsgrzMdx axI6flBwWIev0Z7i+WF4j8BGnrKhRANCAATnS4T5hLGoOAyQUHKGlyBNWpcKoc6H rwuO3XPSOSUN9/9ZXvGj5TqjdEQG0r8LT8sz4R/cUHfBH1pcwY0wtv0Q -----END EC PRIVATE KEY-----Message
Hello WorldSignature
B0A9A4F641D3A2E3A65576B7311DCD62ABE78BBF4D3F5FE856598508E24FCB2E6F0277C2F8D57E9E2E108B7C493986E783F5316B8046597019951669B4EE6922

 

Để xác minh tin nhắn, người ta phải nhập vào khóa công khai, tin nhắn và chữ ký. Thuật toán mã hóa có thể xác minh nếu thông điệp được chủ sở hữu của khóa công khai ký.

Phải mất 1000 năm để phá vỡ thuật toán mã hóa. Điều này không thể thực hiện nhanh hơn vì chúng tôi có giới hạn tính toán. Máy tính lượng tử trong tương lai có thể thách thức điều này. Tuy nhiên, hệ thống Bitcoin có thể được nâng cấp để đảm bảo an ninh.

Satoshi kết hợp cryptography trong hệ thống của mình để giúp mọi người cho phép các giao dịch bitcoin từ ví của họ.

6. Chế độ Riêng tư của Blockchain

 

Bạn đăng ký bitcoin bằng cách tạo một ví (khóa công khai / khóa riêng). Các hệ thống thu thập không có thông tin như id email, tên đầy đủ, vv Do đó bạn ẩn danh trừ khi bạn thông báo khóa công khai của mình.

7. Đặt nó cùng nhau

Satoshi đã xây dựng sổ kế toán dùng chung cryptography và các mạng peer-to-peer. Khi ai đó gửi bitcoin cho ai đó, một thông điệp được ký mã hóa và phát sóng cho toàn bộ mọi người trong mạng. Họ cập nhật sổ kế toán của họ, do đó tất cả mọi người trong mạng biết ai sở hữu cái gì.

8. Lập trình Blockchain

Mỗi giao dịch mười phút được nhóm lại với nhau thành một khối và liên kết ngược lại với các khối trước đó. Quá trình này tạo ra một blockchain liên tục. Khai thác là một quá trình mà theo đó một khối được xác nhận, điều này liên quan đến các máy tính trong mạng để giải quyết một vấn đề toán học. Máy tính / thợ mỏ đầu tiên giải quyết được vấn đề sẽ được thưởng bằng bitcoin mà được tạo ra từ không khí mỏng.

Khi khối đã được xác nhận và được thêm vào mạng, nó được nhân rộng trên toàn bộ mạng. Blockchain được phát minh trong quá trình tạo ra hệ thống Bitcoin tự trị xác nhận các giao dịch mà không có sự can thiệp của con người. Nếu bạn đang tìm kiếm một giải thích đơn giản cho blockchain, đây là một câu trả lời.

9. Giới thiệu về Ethereum & Hợp đồng thông minh

 

Trước đó chúng tôi đã nói về việc thay thế người trung gian bằng các hệ thống tự trị. Điều này có thể được thực hiện thông qua lập trình. Hệ thống Bitcoin sẽ gây  khó khăn cho người dùng để nắm giữ code các hệ thống tự trị.

Do đó Vitalik Buterin đã xây dựng một cryptocurrency mới gọi là Ethereum. Nó không chỉ là một tiền mã hóa phi tập trung mà là một mạng lưới các máy tính có thể lưu trữ code theo hình thức hợp đồng thông minh.

 

Trong hợp đồng thông minh, chúng tôi có thể lập trình các điều kiện. Nếu bạn muốn xây dựng một hiệu sách phân cấp. Bạn viết hướng dẫn để giúp tác giả thêm sách mới, gửi liên kết tải xuống sách điện tử khi khách hàng thực hiện giao dịch, v.v.

Theo bigcoinvietnam Hợp đồng thông minh không chỉ lưu trữ các điều kiện mà còn cả dữ liệu. Một hợp đồng thông minh của một hiệu sách phân cấp trong chính nó lưu trữ danh sách sách, mua hàng, v.v.

 

Tuy nhiên, chúng ta nên thừa nhận những hạn chế của hợp đồng thông minh. Một số hệ thống cần sự hỗ trợ của con người, máy tính không thể xử lý nó. Trong thế giới thực triển khai hợp đồng thông minh thì không dễ. Hợp đồng thông minh sau khi đưa ra thì không thể thay đổi, những sai lầm ngớ ngẩn có thể gây tốn kém.

10. Lập trình Blockchain hợp đồng thông minh trên Ethereum

Chúng ta sẽ xây dựng một hợp đồng thông minh đơn giản để lưu trữ và truy xuất điểm của học sinh. Chúng ta sẽ mã hóa hợp đồng trong solodity. Đây là github repo.

 

pragma solidity ^0.4.18;contract Grades{}

 

Dòng đầu tiên cho trình biên dịch biết chúng ta đang sử dụng phiên bản solidity nào. Sau đó, chúng ta xác định các loại hợp đồng.

Chúng ta cần lưu trữ hai thứ trong hợp đồng đó là, tên của học sinh và điểm số của họ. Do đó chúng ta sẽ tạo ra một mảng để lưu trữ tên học sinh và một mảng kết hợp để lưu trữ điểm số của họ.

 

pragma solidity ^0.4.18;contract Grades{mapping (bytes32 => string) public grades;
bytes32[] public studentList;}

 

Bây giờ, chúng ta sẽ tạo ra một cách mà qua đó chúng ta có thể gửi hợp đồng, một danh sách các tên học sinh. Chúng ta sẽ làm điều đó trong constructor.

 

pragma solidity ^0.4.18;contract Grades{mapping (bytes32 => string) public grades;
bytes32[] public studentList;function Grades(bytes32[] studentNames) public {
studentList = studentNames;
}}

 

Trong Solidity, chúng ta sẽ gọi hàm tạo chỉ một lần. Chúng ta sẽ chuyển tên học sinh như một đối số, sẽ được lưu trữ trong mảng studentList mà chúng ta đã khai báo trước đó.

Bây giờ, chúng ta cần viết một hàm để gán cho học sinh lớp của họ. Chúng ta cũng cần một chức năng khác để kiểm tra xem học sinh có hợp lệ hay không.

 

pragma solidity ^0.4.18;contract Grades{mapping (bytes32 => string) public grades;
bytes32[] public studentList;function Grades(bytes32[] studentNames) public {
studentList = studentNames;
}function giveGradeToStudent(bytes32 student, string grade) public {
require(validStudent(student));
grades[student] = grade;
}function validStudent(bytes32 student) view public returns (bool) {
for(uint i = 0; i < studentList.length; i++) {
if (studentList[i] == student) {
return true;
}
}
return false;
}}

 

Hàm “giveGradeToStudent” nhận hai đối số, tên học sinh và cấp lớp. Hàm require yêu cầu kiểm tra nếu hàm “validStudent” trả về true hoặc false. Nếu nó trả về false, thực thi sẽ bị hủy bỏ.

Cuối cùng, chúng ta cần viết một hàm để lấy điểm của một học sinh. Hàm “getGradeForStudent” nhận tên sinh viên làm đối số, trả về cấp tương ứng từ mảng kết hợp.

pragma solidity ^0.4.18;contract Grades{mapping (bytes32 => string) public grades;
bytes32[] public studentList;function Grades(bytes32[] studentNames) public {
studentList = studentNames;
}function giveGradeToStudent(bytes32 student, string grade) public {
require(validStudent(student));
grades[student] = grade;
}function validStudent(bytes32 student) view public returns (bool) {
for(uint i = 0; i < studentList.length; i++) {
if (studentList[i] == student) {
return true;
}
}
return false;
}function getGradeForStudent(bytes32 student) view public returns (string) {
require(validStudent(student));
return grades[student];
}}

Vì lợi ích của hướng dẫn này, bạn có thể triển khai điều này trên một blockchain cá nhân. Bạn có thể tạo bằng Ganache. Dưới đây là các lệnh để cài đặt và chạy ganache.

npm install ganache-cli web3@0.20.3 solc
node_modules/.bin/ganache-cli

 Giữ cho ganache chạy, trên một thiết bị cuối mới, chúng tôi sẽ triển khai hợp đồng thông minh của chúng tôi. Vui lòng lưu hợp đồng thông minh dưới dạng ‘Grades.sol’.

Hãy biên dịch code.

node
code = fs.readFileSync('Grades.sol').toString()

solc = require('solc')
compiledCode = solc.compile(code)

Bây giờ, hãy triển khai hợp đồng thông minh. Triển khai hợp đồng trên một blockchain sẽ làm bạn mất tiền, đây là phần thưởng để thuê người tính toán cho bạn. Tuy nhiên, bạn không phải trả tiền ngay bây giờ bởi vì bạn đang triển khai trên một blockchain cá nhân và đó là tài nguyên của bạn đang được sử dụng. Bạn sẽ phải trả tiền khi bạn triển khai hợp đồng trên blockchain Ethereum công cộng.

Web3 = require('web3')web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));abiDefinition = JSON.parse(compiledCode.contracts[':Grades'].interface)GradesContract = web3.eth.contract(abiDefinition)byteCode = compiledCode.contracts[':Grades'].bytecodedeployedContract = GradesContract.new(['John','James'],{data: byteCode, from: web3.eth.accounts[0], gas: 4700000})

Bây giờ hãy gọi các chức năng của chúng ta để cung cấp cho lớp 'A +' cho học sinh John. Sau đó, chúng ta sẽ kiểm tra xem nó có được cập nhật hay không bằng cách sử dụng chức năng 'getGradeForStudent'.

deployedContract.giveGradeToStudent('John', 'A+', {from: web3.eth.accounts[0]})deployedContract.getGradeForStudent.call('John')
'A+'

The Way Ahead

Bạn có thể có được sự hiểu biết sâu sắc về cách viết các hợp đồng thông minh Ethereum trong các trang web sau đây.

CryptoZombie

Bạn không phải tải xuống bất kỳ thứ gì, bạn có thể viết mã trên trình biên dịch tương tác của họ. Bạn sẽ tìm hiểu các khái niệm về lập trình solidity bằng cách xây dựng một trò chơi. Hoàn toàn miễn phí.

Zastrin

Zastrin có cả khóa học miễn phí và trả phí. Mahesh Murthy  bao gồm tất cả các khía cạnh quan trọng. Họ thậm chí còn dạy bạn xây dựng một thị trường phi tập trung tương tự như eBay.

Biên soạn:  https://bigcoinvietnam.com/

Chia sẻ  
  
  
  
93.33% Rating
Điểm: 4.67 / 5
3 Bình chọn

Charlotte

Hy vọng các bạn sẽ có thêm nhiều thông tin bổ ích về cộng đồng crypto từ các bài dịch của team dịch bigcoinvietnam.com!

Sự khác biệt giữa giao dịch ngoại hối và tiền điện tử


Sự khác biệt giữa giao dịch ngoại hối và tiền điện tử

Nhiều người sẽ cho rằng so sánh giao dịch tiền điện tử với ngoại hối cũng giống như so sánh táo và cam, nhưng điều đó không hoàn toàn chính xác. Khi kiểm tra kỹ hơn, có một số điểm tương đồng giữa hai loại. Ví dụ, động lực thị trường cơ bản của cung và cầu thường sẽ chi phối giá của các tài sản tương ứng. Ở đây các thương nhân chia sẻ suy nghĩ của họ về cơ học của từng loại.

Tiền điện tử vs Forex
Sự khác biệt giữa Forex và giao dịch tiền điện tử , cần một nhà giao dịch hiểu biết nhất định để điều hướng các điều kiện thị trường không thể đoán trước và xuất hiện lợi nhuận. Hãy bắt đầu với những ưu và nhược điểm từ giao dịch cả tiền điện tử và ngoại hối.

Alex Mashinsky, CEO của Celsius Network, lưu ý rằng : " Tiền điện tử và ngoại hối đều đại diện cho một cửa hàng kỹ thuật số có giá trị và có thể được mua và bán một cách dễ dàng. Cả hai đều có độ biến động cao tạo ra cơ hội cho lợi nhuận nhanh chóng dài hay ngắn"

Chuyên gia của giao dịch tiền điện tử và ngoại hối cho rằng đây là những thị trường toàn cầu bị chi phối bởi những người chơi tài chính lớn có khả năng giao dịch thuật toán. Mashinsky cho biết, hầu hết người chơi cá nhân không thể cạnh tranh hoặc phù hợp với giao dịch và tốc độ của các quỹ phòng hộ và các ngân hàng lớn bơi trong các thị trường này.

Ông giải thích rằng sự khác biệt lớn nhất giữa thị trường ngoại hối và BTC là không giống như ngoại hối, bitcoin bắt đầu và mở rộng thông qua giao dịch bán lẻ toàn cầu và không thông qua người chơi tổ chức. Điều này làm cho thị trường BTC hoạt động theo một mô hình rất khác so với thị trường ngoại hối truyền thống.

Kyle Cox, nhà phân tích đầu tư cao cấp tại Invictus Capital, nhấn mạnh rằng bitcoin có nguồn cung cuối cùng là 21 triệu đồng, với các giao thức kiểm soát việc phát hành mới có nghĩa là có rất ít chỗ để thao túng. Do đó, giao dịch bằng bitcoin sẽ hoàn toàn tập trung vào nhu cầu, do đó sẽ dựa trên việc áp dụng và đến lượt chất lượng của dự án, theo Cox Cox giải thích. Việc sử dụng bitcoin cao hơn về cơ bản làm tăng kích thước của mạng, có nghĩa là nhiều người dùng hơn, tiện ích cao hơn và giá tăng. Việc thiếu ảnh hưởng bên ngoài hoặc tập trung là duy nhất và là lợi ích của tài sản tiền điện tử.

Fair Amount of Skill and Luck Is Involved


Mặt khác, sự khác biệt giữa tiền tệ Forex và tiền điện tử , có khả năng cung cấp không giới hạn, vì mỗi loại tiền tệ cung cấp được xác định bởi chính sách tiền tệ của quốc gia phát hành cụ thể.

Mỗi quốc gia Ngân hàng trung ương (thường) điều chỉnh việc cung cấp loại tiền đó có sẵn thông qua các cơ chế chính sách khác nhau liên quan đến việc mua lại hoặc lãi suất. Về cơ bản, có thể được định nghĩa là chi phí cơ hội của việc nắm giữ tiền mặt trong nền kinh tế đó. Các quyết định chính sách này được thực hiện với nhận thức sâu sắc về các điều kiện và điều kiện kinh tế vĩ mô trong nước và toàn cầu, và do đó dẫn đến sự biến động cả về cung và cầu, ông Cox nói :

Về cơ bản, các nhà giao dịch tiền tệ tìm kiếm lợi nhuận sẽ tìm mua các loại tiền có dấu hiệu cải thiện kinh tế vĩ mô thông qua việc bán các loại tiền tệ cho thấy điều ngược lại. Có một số lượng kỹ năng khá lớn, và phải nói rằng, may mắn liên quan đến quá trình này, vì bất kỳ nhà giao dịch trung thực nào cũng sẽ chứng thực, ném Cox lưu ý.

BTC Involves Little Cost

 Một yếu tố khác cần xem xét là bản chất của blockchain bitcoin có nghĩa là BTC được giao dịch trên cơ sở ngang hàng, ở dạng thô có ít chi phí.

Cox chỉ ra rằng điều này là do thực tế không có trung gian theo nghĩa cổ điển, như trường hợp trong thị trường ngoại hối nơi các nhà môi giới và nhà tổng hợp tạo điều kiện cho các giao dịch giữa những người tham gia, thường có thể thêm một lớp phí.

Cox : "Nơi mà các trung gian đến với bitcoin và các loại tiền điện tử khác, thông qua trao đổi tiền điện tử", Cox giải thích. Các sàn giao dịch này đóng vai trò là kho lưu trữ trung tâm của tài sản, tạo thuận lợi cho các giao dịch và thu phí trên cơ sở này. Vì vậy, có, khía cạnh này có thể được coi là một phần tương tự [với forex] tuy nhiên với các cơ chế khác nhau. Trên thực tế, rất khó để so sánh tổng quát về phí thực tế vì chúng khác nhau tùy thuộc vào trao đổi, cặp tiền tệ, khối lượng và nhiều yếu tố khác.

Thị trường ngoại hối có mức độ thanh khoản sâu
Sự khác biệt giữa giao dịch ngoại hối và tiền điện tử Một thực tế quan trọng khác cần lưu ý là thị trường ngoại hối có thanh khoản sâu và cố thủ do kết quả của lịch sử hoạt động lâu dài.

Cox giải thích: Hiện tượng toàn cầu hóa và công nghệ đã thúc đẩy hoạt động kinh doanh ngoại tệ, do kết quả của các giao dịch xuyên biên giới và có sẵn nhiều phương tiện giao dịch và cơ sở hạ tầng.

[Forex] cho đến nay là một trong những thị trường lớn nhất trên hành tinh, với khối lượng giao dịch hàng ngày lên tới hàng nghìn tỷ đô la Mỹ. Hầu hết khối lượng này được quy cho các loại tiền tệ được thành lập, phát triển, chẳng hạn như đồng đô la Mỹ, đóng vai trò là tiền tệ dự trữ cho thế giới.

Có một số điểm tương đồng ở đây với bitc

Trích nguồn : Bitcoin.com

Chia sẻ  
  
  
  
93.33% Rating
Điểm: 4.67 / 5
3 Bình chọn

admin

Mang giá trị lại cho tất cả mọi người

Đọc nhiều

NHẬN ĐĂNG KÝ NHẬN TIN TỪ BIGCOIN VIETNAM

" TIÊU CHÍ ĐẦU TƯ ICO THÀNH CÔNG và REVIEW ICO HOT hàng tuần"

Bigcoin Việt Nam - Phân tích đầu tư Bitcoin và các dự án công nghê Blockchain