base.network — пиринговый веб на javascript / Денис Глазков (lazada...
TRANSCRIPT
![Page 1: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/1.jpg)
Пиринговый вебна JavaScriptДенис Глазков
![Page 2: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/2.jpg)
- обзор пиринговых сетей- устройство сети base.network- серверные ноды- криптография на JS- устройство клиента- разработка клиентских приложений
Содержание
![Page 3: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/3.jpg)
Закрыли любимую группу в соц. сетях?
![Page 4: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/4.jpg)
Великий Китайский Фаервол
![Page 5: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/5.jpg)
![Page 6: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/6.jpg)
![Page 7: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/7.jpg)
![Page 8: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/8.jpg)
Цензура в Интернете
![Page 9: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/9.jpg)
Пиринговые технологии
ethereum
![Page 10: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/10.jpg)
Одноранговые сети
![Page 11: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/11.jpg)
Мир во всех Мирах!
![Page 12: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/12.jpg)
Прекрасное жестоко, не будь ко мне далёко
![Page 13: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/13.jpg)
![Page 14: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/14.jpg)
Социальная сеть Земля-Марс ?
![Page 15: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/15.jpg)
I2P
![Page 16: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/16.jpg)
Freenet
![Page 17: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/17.jpg)
![Page 18: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/18.jpg)
Минусы существующих пиринговых сетей
- не умеют работать с динамикой - медленные- установка “мутного” клиентского ПО- страдают “централизацией”
![Page 19: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/19.jpg)
base.networkО проекте
• опенсоурс проект на JavaScript• децентрализованная сеть • без DNS, без центральных
серверов • поверх HTTP
![Page 20: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/20.jpg)
base.network
Возможности
• собственные сайты, доменные имена
• загрузка и чтение файлов, json-данных
• блоги, комменты, фотоальбомы, плейлисты
• чаты в реальном времени
![Page 21: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/21.jpg)
Устройство сети
NodeJSIP:port
NodeJSIP:port
NodeJSIP:port
NodeJSIP:port
NodeJSIP:port
NodeJSIP:port
clientJavaScript
clientJavaScript
clientJavaScript
clientJavaScript
clientJavaScript
NodeJSIP:port
data: A B C
![Page 22: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/22.jpg)
Серверная нодаВеб-сервер + БД (NodeJS, SQLite3)Простой и быстрый KeyValue Storage
Функции:- сообщает о себе другим нодам- пишет данные в распределенную базу - проверяет валидность данных (подпись
автора)- реплицирует данные между нодами- уведомляет о добавлении данных
![Page 23: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/23.jpg)
Карта сети - список всех нод
curl http://5.9.123.140:8080/-/nodes
{ "nid":"5.9.123.140/8080", "ver"1, "seg":"D,N,F,P,D0,D1,……"}{ "nid":"46.4.76.98/8081", "ver"1, "seg":"……F41,F54,P04"}
![Page 24: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/24.jpg)
Информация о нодеcurl http://5.9.123.140:8080/-/about
{ "ver":1, "nid":"5.9.123.140/8080", "updated":1441639911027, "segments":{ "D":{"usage":0.2}, "N":{"usage":0.5}, "F":{"usage":0.3}, … }}
![Page 25: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/25.jpg)
https://github.com/basenetwork/base.server-node/
GitСерверная нода
NodeJS
![Page 26: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/26.jpg)
• sign(data, privateKey) • verify(data, sign, publicKey)
• encrypt(data, publicKey)• decrypt(data, privateKey)
Криптография на JavaScript
- Эллиптические кривые secp256k1
- Длина ключа 256 бит (32 байта) - Минимальный набор функций:
![Page 27: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/27.jpg)
Криптография на JavaScriptбиблиотеки
CryptoJS v3.1.2 code.google.com/p/crypto-js
(c) Tom Wu http://www-cs-students.stanford.edu/~tjw/jsbn/
jsrsasign 4.8.3 (c) 2010-2015 Kenji Urushima kjur.github.com/jsrsasign/license
![Page 28: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/28.jpg)
Клиент
![Page 29: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/29.jpg)
![Page 30: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/30.jpg)
![Page 31: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/31.jpg)
Под капотом
![Page 32: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/32.jpg)
![Page 33: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/33.jpg)
![Page 34: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/34.jpg)
![Page 35: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/35.jpg)
Разработка клиентского приложения
//============ MySiteEngine.js =================
var baseAPI = basenetwork.getAPI(0);
// request current site informationvar siteInfo = baseAPI.getCurrentSiteInfo();
// -> {host,owner,title,ring…}
![Page 36: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/36.jpg)
Файлы. Пользователи
// upload file to cloudbaseAPI.uploadFile(fileReader, function(err){
});
// request file from cloudvar fileID = "F2/d8f08dd1564510b0f...e2aaf1e22ec2a1.jpeg";baseAPI.requestFile(fileID, function(err, content, info){
});
// get user info by public certificatebaseAPI.getUserInfo(certificate, function(err, userInfo){
});
![Page 37: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/37.jpg)
![Page 38: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/38.jpg)
Добавление данных в каналvar channel = siteInfo.host + "/super-chat/";
var data = { message: "Bla-bla-bla"};
// post data to cloudbaseAPI.postData({
uid: channel, data: data, ver: 0, pos: "2016-02-25 19:00:00”
}, function(err, resp) { // process results console.log(err? "Error" : "OK");
});
![Page 39: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/39.jpg)
Получение списка данных из канала
var request = { cmd: "top", // "top|nxt|prv|doc|old" uid: channel, // address of channel sse: true // listen server side events};
baseAPI.requestData(request, function(err, packs) {
// process data packs.forEach(function(pack) { // render messages console.log(pack.data.message) });
});
![Page 40: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/40.jpg)
https://github.com/basenetwork/client-js/
GitКлиентское ядро
![Page 41: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/41.jpg)
https://github.com/basenetwork/site-engiene-js/
GitСайтовый движок
![Page 42: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/42.jpg)
React.JS Chat// Components/Chat.jsx
//======= New Message Form =============
var MessageNew = $class(Form, {
render: function() { return ( <form onSubmit={this.submit} className="chat-message-new">
{this.$input("message", {placeholder: "New message”})}
<button type="submit">Add message</button>
</form> ); }
});
![Page 43: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/43.jpg)
React.JS Chat
//============ Components/Chat.jsx Message =================
var Message = $component("chat-message", {
render: function() { return( <div className="chat-message">
<UserIcon user={this.props.element.author} />
<UserName user={this.props.element.author} />
<p>{this.props.element.get("message")}</p>
</div> ); }
});
![Page 44: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/44.jpg)
React.JS Chat
//====== Register Chat Component ==========
$component('chat', Page, {
tplChildForm: MessageNew,
tplChildItem: Message
});
![Page 45: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/45.jpg)
![Page 46: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/46.jpg)
• http://base.network/• https://github.com/basenetwork
Ссылки
![Page 47: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/47.jpg)
Перспективы развития
WebRTC
Client
IndexedDB
Client
IndexedDB
Proxy server
- Нативная криптография через window.crypto- WebRTC, IndexedDB- Расширение функционала сайтового движка- Приватные чаты
![Page 48: base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)](https://reader036.vdocuments.site/reader036/viewer/2022062223/586f8f811a28ab54768b75eb/html5/thumbnails/48.jpg)
base.networkПиринговый веб на JavaScript
Денис Глазков2016
Вопросы?