Merge pull request #2 from status-im/develop

Develop
This commit is contained in:
Bruno Škvorc 2018-10-11 11:30:58 +02:00 committed by GitHub
commit 3a7c7dc215
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 242 additions and 100 deletions

49
.gitignore vendored
View File

@ -6,3 +6,52 @@ db.json
.deploy*/
package-lock.json
public/
# Composer
/vendor
composer.phar
# IntelliJ - PhpStorm and PyCharm
*.ipr
*.iws
# Eclipse
/.project
/.settings
/.classpath
# Logs
logs
error.log
access.log
# Netbeans
nbproject
.nbproject
.nbproject/*
nbproject/*
nbproject/private/
/nbbuild/
/nbdist/
nbactions.xml
nb-configuration.xml
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
# SublimeText project files
/*.sublime-project
*.sublime-workspace
# Dart
packages
packages/*
# Vagrant
.vagrant
.vagrant/*
.env

View File

@ -1,10 +1,12 @@
docs:
Nimbus:
introduction: index.html
building: building.html
options: options.html
libs: libs.html
milestones: milestones.html
design: design.html
ideas_for_implementation: ideas_for_implementation.html
resources: resources.html
team: team.html
faq: faq.html
contributor_guide: contributor_guide.html

37
source/docs/building.md Normal file
View File

@ -0,0 +1,37 @@
---
id: building
title: Getting Started with Nimbus
---
This document will explain how to install, test, and run Nimbus on your local machine. For a full guide, see the [Nimbus for Newbies](https://our.status.im/nimbus-for-newbies/) post.
## Getting Started
- [install Nim](https://bitfalls.com/nim1)
- be on a command-line friendly system (i.e. access to Terminal / Console / Git Bash / Powershell)
## Prerequisites
- install [RocksDB](https://rocksdb.org/) via official instructions or by running the below commands:
- on OS X:
```bash
brew install rocksdb
curl https://nim-lang.org/choosenim/init.sh -sSf | sh
```
- on Linux
```bash
sudo apt-get install rocksdb # or your own Linux distribution's equivalent
curl https://nim-lang.org/choosenim/init.sh -sSf | sh
```
## Install Nimbus
```bash
git clone https://github.com/status-im/nimbus
cd nimbus
nimble install
nimble test
```
Run Nimbus with `nimbus` or look at flags and options with `nimbus --help`.

View File

@ -4,4 +4,23 @@ title: Contributor Guide
---
# How To Get Involved In Research At Status
# How To Get Involved with Nimbus' development
- look around [the repo](https://github.com/status-im/nimbus), especially the [open issues](https://github.com/status-im/nimbus/issues)
- check out some [open bounties](https://openbounty.status.im/app#/)
- check out some [more open bounties](https://gitcoin.co/explorer?keywords=nimbus&order_by=-web3_created)
- learn about the source code by [dissecting](https://github.com/status-im/nimbus/tree/master/tests) and [debugging](https://github.com/status-im/nimbus/wiki/Understanding-and-debugging-Nimbus-EVM-JSON-tests) the tests
## Thought Experiments
If you have research ideas you'd like to throw at us, exotic hardware you'd like to test on, or anything else revolutionary cooking up in your mind that you think might be bite too big for Geth or Parity to chew, let us know. We'll gladly experiment!
## Guidelines
Whatever you might expect to see in other projects applies here:
- be nice to others
- when evaluating PRs, focus exclusively on the quality of the code
- if submitting code, make sure it's tested. All code MUST come with tests. To speed up the review, ping a [team member](/docs/team).
- if submitting typo fixes or documentation changes, speed up the review process by pinging a team member. [Swader](https://github.com/swader) will usually review those very quickly.
- if submitting a tutorial for inclusion on the [official blog](), also feel free to ping [Swader](https://github.com/swader).

View File

@ -42,4 +42,4 @@ Within the community at large, we will promote Ethereum as the leader of scalabl
## Bounty-Based Development
To entice the community to accelerate the development, we will attach bounties to and **[publish](https://openbounty.status.im/app#/) **the tasks that can be self-contained and defined clearly.
To entice the community to accelerate the development, we will attach bounties to and **[publish](https://openbounty.status.im/app#/)** the tasks that can be self-contained and defined clearly.

19
source/docs/faq.md Normal file
View File

@ -0,0 +1,19 @@
---
id: faq
title: Frequently Asked Questions
---
In talking to people both familiar and complete strangers to Ethereum clients, these questions were asked more than once.
### Q: When do you expect to have it production-ready?
Not for a while. Sharding is a long ways off, and until then we'll be focusing on getting Ethereum v1 tests to pass in our full node mode. The full node will be ready in 2019, but the super-light implementation might take longer.
### Q: How is a super-light node different from just calling Infura through Web3js?
A Web3js or any similar JavaScript package for communicating with the blockchain is basically a more advanced XMLHttpRequest / Fetch wrapper. What we mean by this is that these packages retrieve information from another node and trust it implicitly. They ask "has this transaction been confirmed?" and get a response that's either "yes" or "that transaction is unknown". With light nodes, they ask "give me the data to check if this transaction has been confirmed" and then check on their own. This is a trust-minimized setup which combines the best of both worlds - very little storage and processing power required while allowing for cryptographic verification of the full node's claims.
### Q: What's the plan for mobile? You speak of deploying to mobile devices, but Nimbus only compiles to C, C++ and JavaScript and iOS and Android don't support C natively. Will you be compiling to JS and deploying with a web wrapper? That doesn't sound performant!
Native compiles with Nim work for both Android and iOS, just like geth written in go works. It's all NDK/C API. We'll soon have published specific instructions on how to compile it for all manner of devices.

View File

@ -1,14 +0,0 @@
---
id: ideas_for_implementation
title: Ideas for Implementation
---
1. Create [devp2p](https://github.com/ethereum/wiki/wiki/%C3%90%CE%9EVp2p-Wire-Protocol) and an abstraction to allow for [libp2p](https://github.com/Agorise/c-libp2p), [Node Discovery](https://github.com/ethereum/wiki/wiki/Node-discovery-protocol), [RLP encoding](https://github.com/ethereum/wiki/wiki/RLP), [Modified Patricia Merkle Tree](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/), [bigint's](https://github.com/def-/nim-bigints), [keccak256](https://github.com/ethereum/eth-hash), and [secp256k1](https://en.bitcoin.it/wiki/Secp256k1).
1. Create an abstraction that would allow sub-protocols: ETH, [SHH](https://gist.github.com/gluk256/9812e59ed0481050350a11308ada4096), [PSS](https://gist.github.com/zelig/d52dab6a4509125f842bbd0dce1e9440), [Swarm](https://github.com/ethersphere/swarm), [LES](https://github.com/ethereum/wiki/wiki/Light-client-protocol), [Stateless Clients](https://nordicapis.com/defining-stateful-vs-stateless-web-services/), Sharding, [Plasma](https://plasma.io/), [State Channels](https://blog.stephantual.com/what-are-state-channels-32a81f7accab). For now, we can ignore all but LES and Sharding.
1. DB: Most implementations of Ethereum use [LevelDB](https://github.com/google/leveldb). Parity has a DB abstraction and uses [HashDB](https://github.com/NPS-DEEP/hashdb/wiki) and [RocksDB](https://rocksdb.org/docs/getting-started.html).
1. RocksDB is an interesting choice, because it solves the issues that have troubled leveldb. Rocksdb also has a [light version](https://github.com/facebook/rocksdb/blob/master/ROCKSDB_LITE.md) for mobile usage; it's in C++, which would be an issue only if we go for pure C.
1. [EVM](https://github.com/pirapira/awesome-ethereum-virtual-machine): basic VM, [eWASM](https://github.com/ewasm/design) ([Hera](https://github.com/ewasm/hera) is also in C++)
1. IPC/RPC abstraction, [external API methods](https://github.com/ethereum/wiki/wiki/JSON-RPC) that can be consumed by application bindings: react-native module, IPC, RPC HTTP server, or web sockets
1. Encryption library is a little unclear. [Libgcrypt](https://www.gnupg.org/software/libgcrypt/index.html) has everything we need but might be problematic from the standpoint of LGPL licensing. If we have an abstraction for Libgcrypt, we could use it now and swap it out later for something more permissive.
1. Alternatively, we could roll out our own library. However, implementing our own encryption would not be a great idea, and our version would have to be audited and tested. Suggestions are welcome.
1. Monitor [ethereum/py-evm](https://github.com/ethereum/py-evm/tree/sharding). Connect with Chang-Wu Chen, Hsiao-Wei Wang, and anyone else working on sharding.

View File

@ -1,31 +1,14 @@
title: An Ethereum 2.0 Sharding Client
---
## OVERVIEW
Draft 2018-05-22
## Overview
Nimbus aims to be a [sharding](https://github.com/ethereum/wiki/wiki/Sharding-FAQ) client implementation for the Ethereum Blockchain Application Platform. Because the largest deployment of Ethereum will potentially be on embedded systems, Nimbus will be designed to perform well on IoT and personal mobile devices, including older smartphones with resource-restricted hardware. The extensible, configurable, and modular design of Nimbus will make it production ready for Web 3.0 and will ensure that it can be supported and maintained across all goals of Ethereum 2.0.
## GOALS
For a more comprehensive introduction, please read our Nimbus for Newbies post or proceed directly to [getting started](/docs/building.html) if you're already sold.
1. Create an Ethereum implementation suitable for resource-restricted devices.
1. Create an implementation team for the [Applied Research Objectives](https://hackmd.io/s/HkLkj55yb#objectives-in-applied-research) of [Ethereum Research](http://ethereumresearch.org/) (aka Ethereum Asia Pacific Limited), with focus on the following:
1. Proof of Stake (PoS)
1. Sharding
1. Stateless Clients
1. LES2
1. eWASM
1. Close the gap between research modeling and production.
1. Pledge to participate in, help implement, and conform to the [Ethereum Improvement Proposal](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md).
1. Implement permissive licensing.
1. Focus on production-ready [Web 3.0](https://medium.com/@matteozago/why-the-web-3-0-matters-and-you-should-know-about-it-a5851d63c949) Stack ([Whisper](https://github.com/ethereum/wiki/wiki/Whisper), [PSS](https://github.com/nolash/psstalk/blob/master/README.md), and [Swarm](https://swarm-guide.readthedocs.io/en/latest/introduction.html)) and its ongoing research and development.
1. Focus on marketing and promotion to address community concerns on scalability and to bolster Ethereum's dominant mindshare.
## REQUIREMENTS
## Requirements
[Nim](https://nim-lang.org/) is an efficient, general-purpose systems programming language with a Python-like syntax that compiles to C. Nim will allow us to implement Ethereum rapidly and to take advantage of the mature C-language tooling: in compilation of machine code, and in the analysis of static code.

54
source/docs/index_old.md Normal file
View File

@ -0,0 +1,54 @@
title: An Ethereum 2.0 Sharding Client
---
## Overview
Nimbus aims to be a [sharding](https://github.com/ethereum/wiki/wiki/Sharding-FAQ) client implementation for the Ethereum Blockchain Application Platform. Because the largest deployment of Ethereum will potentially be on embedded systems, Nimbus will be designed to perform well on IoT and personal mobile devices, including older smartphones with resource-restricted hardware. The extensible, configurable, and modular design of Nimbus will make it production ready for Web 3.0 and will ensure that it can be supported and maintained across all goals of Ethereum 2.0.
## GOALS
1. Create an Ethereum implementation suitable for resource-restricted devices.
1. Create an implementation team for the [Applied Research Objectives](https://hackmd.io/s/HkLkj55yb#objectives-in-applied-research) of [Ethereum Research](http://ethereumresearch.org/) (aka Ethereum Asia Pacific Limited), with focus on the following:
1. Proof of Stake (PoS)
1. Sharding
1. Stateless Clients
1. LES2
1. eWASM
1. Close the gap between research modeling and production.
1. Pledge to participate in, help implement, and conform to the [Ethereum Improvement Proposal](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md).
1. Implement permissive licensing.
1. Focus on production-ready [Web 3.0](https://medium.com/@matteozago/why-the-web-3-0-matters-and-you-should-know-about-it-a5851d63c949) Stack ([Whisper](https://github.com/ethereum/wiki/wiki/Whisper), [PSS](https://github.com/nolash/psstalk/blob/master/README.md), and [Swarm](https://swarm-guide.readthedocs.io/en/latest/introduction.html)) and its ongoing research and development.
1. Focus on marketing and promotion to address community concerns on scalability and to bolster Ethereum's dominant mindshare.
## REQUIREMENTS
[Nim](https://nim-lang.org/) is an efficient, general-purpose systems programming language with a Python-like syntax that compiles to C. Nim will allow us to implement Ethereum rapidly and to take advantage of the mature C-language tooling: in compilation of machine code, and in the analysis of static code.
With Ethereum research currently modeled in Python, the end result of implementing in Nim should be code that:
1. Enables us to easily bring research into production
1. Has a high degree of reasonability for researchers
1. Is performant in production
The core contributors and Nim community have been very supportive and enthusiastic for the project.
## Development on Embedded Systems
We believe that the largest successful deployment of Ethereum will reside on embedded systems: IoT devices and mobile personal devices, such as smartphones. Although Nimbus will support archival nodes, its first implementation will be as a light client, with focus on Proof of Stake and sharding.
Existing implementations of Ethereum have focused on desktop computers and servers. These implementations have played a major role in the initial success of Ethereum, and they are suitable for full and archival nodes. However, their deployment onto embedded systems has been an afterthought.
In addition, throughout the development of Status, we have found that the dominant Ethereum implementations, Geth and Parity, are unsuitable for our target platform unless they are profiled and optimised (in progress).
During the deployment of Status among 40,000 alpha testers, we found that a significant portion (23.6%) of users were still running old mobile devices. In addition, recently discovered [Spectre vulnerabilities](https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)) have led to an increase in the demand for open processors. For these reasons, we propose a self-imposed constraint and a requirement that Status perform well on the following:
1. 2014 [SoC](https://en.wikipedia.org/wiki/System_on_a_chip) architectures, such as the [Cortex-A53](https://developer.arm.com/products/processors/cortex-a/cortex-a53) (Samsung Note 4 & [Raspberry Pi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b/)) and the Apple A8 (iPhone 6)
1. [MIPS](https://en.wikipedia.org/wiki/MIPS_architecture)-based architectures, such as the [Onion Omega2](https://onion.io/omega2/)
1. Open-source processors, such as [RISC-V](https://en.wikipedia.org/wiki/RISC-V)
When the 2020 scalability goal is fully realised, this constraint will help ensure that Ethereum runs performantly on resource-restricted hardware that is at least 6 years old.

5
source/docs/libs.md Normal file
View File

@ -0,0 +1,5 @@
---
id: libs
title: Software Libraries
---

6
source/docs/options.md Normal file
View File

@ -0,0 +1,6 @@
---
id: options
title: Beyond the Basics
---
Let's look

View File

@ -23,7 +23,10 @@ sidebar:
introduction: What Is Nimbus?
milestones: Milestones
design: Design
ideas_for_implementation: Ideas For Implementation
faq : FAQ
libs: Software Libraries
building: Getting Started
resources: Resources
team: Team
options: Beyond the Basics
contributor_guide: Contributor Guide

View File

@ -5,7 +5,7 @@
<p>Researching and implementing lighter Ethereum 2.0 clients </p>
<div class="intro-buttons">
<a class="button button--main" href="https://gitter.im/status-im/nimbus">JOIN OUR GITTER</a>
<a class="button button--secondary" href="/docs/">GET INVOLVED</a>
<a class="button button--main" href="/docs/">GET INVOLVED</a>
</div>
</div>
</div>
@ -14,7 +14,7 @@
<h2 id="top-header">Future Plans</h2>
<p>Nimbus is a research project and a client implementation for Ethereum 2.0 designed to perform well on embedded systems and personal mobile devices, including older smartphones with resource-restricted hardware.
</p>
<a href="https://github.com/status-im/nimbus">Learn More on Github <img src="../img/arrow_orange.svg" /></a>
<a href="/docs/milestones.html">Our milestones <img src="../img/arrow_orange.svg" /></a>
<div class="work-items">
<div class="work-item">
<div class="work-item-inner">
@ -22,7 +22,7 @@
<p>Were translating the latest Ethereum 2.0 research like BN curves, BLS signatures and RANDAO games into practical, performant and reusable
libraries to provide fertile exploration ground for further R&D. Want to run advanced simulations and tests? Get in touch!
</p>
<a href="https://github.com/status-im/nimbus">See docs <img src="../img/arrow_orange.svg" /></a>
<a href="/docs">See docs <img src="../img/arrow_orange.svg" /></a>
</div>
<img class="work-item-image" src="../img/graphic-research.svg" />
</div>
@ -38,8 +38,7 @@
<div class="work-item">
<div class="work-item-inner">
<h2>Friendly Networking</h2>
<p>Were translating the latest Ethereum 2.0 research like BN curves, BLS signatures and RANDAO games into practical,
performant and reusable libraries to provide fertile exploration ground for further R&D. Want to run advanced simulations and tests? Get in touch!
<p>We're crazy about hacking together. Want to make Nimbus or Nim the focus of your hackathon? Coming to one of ours but not sure where to start? We'd love to help you out and get the ball rolling. Get in touch!
</p>
</div>
<img class="work-item-image" src="../img/graphic-network.svg" />
@ -79,8 +78,8 @@
<h3>Join the Conversation</h3>
<p>We are an open community and happy to answer your questions and help you learn more about Nimbus.
<p>
<a href="https://get.status.im/chat/public/nimbus">Join us in Status</a>
<span><a href="https://get.status.im/chat/public/nimbus"><img src="../img/arrow_ogn.png" /></a></span>
<a href="https://get.status.im/chat/public/status-nimbus">Join us in Status</a>
<span><a href="https://get.status.im/chat/public/status-nimbus"><img src="../img/arrow_ogn.png" /></a></span>
</div>
</div>
<div class="inner-header">
@ -149,22 +148,7 @@
<h2>Read our Blog</h2>
<p>Check out the latest Nimbus news and blog posts:</p>
</div>
<div class="contribute-wrap">
<div class="contribute blog">
<h3></h3>
<p></p>
<a href="#">Read More <img src="../img/arrow_ogn.png" /></a>
</div>
<div class="contribute blog">
<h3></h3>
<p></p>
<a href="#">Read More <img src="../img/arrow_ogn.png" /></a>
</div>
<div class="contribute blog">
<h3></h3>
<p></p>
<a href="#">Read More <img src="../img/arrow_ogn.png" /></a>
</div>
<div class="contribute-wrap contribute-wrap-blog">
</div>
</div>
</div>

View File

@ -7,22 +7,11 @@
<header class="dropdown">
<nav>
<ul>
<li class="has-submenu">
<a href="#" class="main-link">Status App</a>
<i class="mobile-submenu-trigger"></i>
<div class="sub-menu">
<ul>
<li><a href="https://status.im">About</a></li>
<li><a href="https://status.im">Features</a></li>
<li><a href="https://desktop.status.im">Desktop</a></li>
<li><a href="https://docs.status.im">Docs</a></li>
<li><a href="https://our.status.im">Blog</a></li>
<li><a href="https://people-ops.status.im/">Contribute</a></li>
</ul>
</div>
<li>
<a href="https://status.im" class="main-link">Status Home</a>
</li>
<li class="has-submenu">
<a href="#" class="main-link">Embark</a>
<a href="https://embark.status.im/" class="main-link">Embark</a>
<i class="mobile-submenu-trigger"></i>
<div class="sub-menu">
<ul>
@ -33,14 +22,11 @@
</ul>
</div>
</li>
<li><a href="#">Studio</a></li>
<li class="has-submenu"><a href="https://status.im/incubate">Incubate</a>
<i class="mobile-submenu-trigger"></i>
<div class="sub-menu">
<ul>
<li><a href="https://status.im/incubate">About</a></li>
<li><a href="https://status.im/incubate">Projects</a></li>
<li><a href="https://status.im/incubate">Submissions</a></li>
<li><a href="https://get.status.im/chat/public/status-incubate">Community</a></li>
<li><a href="https://our.status.im/tag/incubate">Blog</a></li>
</ul>
@ -51,28 +37,23 @@
<i class="mobile-submenu-trigger"></i>
<div class="sub-menu">
<ul>
<li><a href="#">About</a></li>
<li><a href="https://nimbus.status.im/docs/">Docs</a></li>
<li><a href="https://our.status.im/tag/research">Blog</a></li>
<li><a href="https://gitter.im/status-im/nimbus">Talk To Us</a></li>
<li><a href="/">About</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="https://our.status.im/tag/nimbus">Blog</a></li>
<li><a href="http://get.status.im/chat/public/status-nimbus">Talk To Us</a></li>
</ul>
</div>
</li>
<li><a href="https://our.status.im/tag/hardwallet">Hardwallet</a></li>
<li><a href="https://hardwallet.status.im/">Hardwallet</a></li>
<li class="has-submenu">
<a href="https://people-ops.status.im">Peopleops</a>
<i class="mobile-submenu-trigger"></i>
<div class="sub-menu">
<ul>
<li><a href="https://our.status.im/our-principles/">Our Principles</a></li>
<li><a href="https://status-im.github.io/people-ops.status.im/docs/working_here.html">Working Here</a></li>
<li><a href="https://status-im.github.io/people-ops.status.im/docs/">Docs</a></li>
<li><a href="https://status-im.github.io/people-ops.status.im/docs/life_status.html">Life at Status</a></li>
<li><a href="https://status.im/open-positions.html">Contribute</a></li>
<li><a href="https://status.im/open-positions.html">Jobs</a></li>
<li><a href="https://status-im.github.io/tag/people-ops">Blog</a></li>
</ul>
</div>
<div class="sub-menu">
<ul>
<li><a href="https://our.status.im/tag/people-ops/">Blog</a></li>
</ul>
</div>
</li>
</ul>
</nav>
@ -85,9 +66,9 @@
</div>
<input type="search" id="search-input" placeholder="Search...">
</div>
<span><a href="http://get.status.im/chat/public/status" class="button button--secondary">Status Public Chat</a></span>
<span><a href="http://get.status.im/chat/public/status-nimbus" class="button button--secondary">Nimbus Status Chat</a></span>
<span class="social-link social-link--twitter"><a href="https://twitter.com/ethstatus" target="_blank"></a></span>
<span class="social-link social-link--github"><a href="https://github.com/status-im" target="_blank"></a></span>
<span class="social-link social-link--github"><a href="https://github.com/status-im/nimbus" target="_blank"></a></span>
</div>
<a href="#" class="mobile-menu-trigger">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">

View File

@ -1229,6 +1229,17 @@ pre {
margin-bottom: 8px;
}
.contribute h3 a{
color: #000;
}
.contribute.blog
.feature-image
margin: -30px 0 24px -24px
img
border-radius: 5px 5px 0 0;
width: calc(100% + 24px);
.contribute p
font-style: normal;
font-weight: normal;

View File

@ -1,16 +1,19 @@
$(document).ready(function () {
let url = 'https://our.status.im/ghost/api/v0.1/posts/?limit=3&formats=plaintext&client_id=ghost-frontend&client_secret=2b055fcd57ba';
var urlBase = [location.protocol, '//', location.host, location.pathname].join('');
$.ajax({
type: "get",
url: url,
success: function (response) {
$.each(response.posts, function (index, val) {
$('.contribute.blog:nth-child('+ (index+1) +') h3').text(val.title);
var excerpt = '';
if(val.custom_excerpt != null) {
$('.contribute.blog:nth-child('+ (index+1) +') p').text(val.custom_excerpt);
excerpt = val.custom_excerpt;
}else{
$('.contribute.blog:nth-child('+ (index+1) +') p').text(getWords(val.plaintext));
excerpt = getWords(val.plaintext);
}
$('.contribute-wrap-blog').prepend('<div class="contribute blog"><a href="https://our.status.im/'+ val.slug +'" class="feature-image"><img src="https://our.status.im/'+ val.feature_image +'" alt="'+ val.title +'"></a><h3><a href="https://our.status.im/'+ val.slug +'">'+ val.title +'</a></h3><p>'+ excerpt +'</p><a href="https://our.status.im/'+ val.slug +'">Read More <img src="'+ urlBase +'/img/arrow_ogn.png" /></a></div>');
});
}
});