Simple EOS Dev Environment

This is a beginner’s guide, to setup a simple development environment for the EOSIO blockchain, which will get you up and running in five simple steps from zero to your first smart contract in less than 10 minutes. Afterwards, you will know how to code and test your own smart contracts on an EOS testnet quickly and for free. In this guide we make use of simple tools, which offer a great developer experience, such as the eosio.cdt (Contract Development Toolkit), the Kylin testnet and the eosc command line wallet. We’re using a development machine, running the Ubuntu 18.04 operating system.

So let’s get started!

1. Account, Keys and Tokens

The Kylin Testnet, which is run by several high class block producers, allows easy and fast access to a (non-productive) EOSIO blockchain, using it’s free Account and Faucet services. We’re going to create a new EOS account (12 character name) on the testnet, including @owner and @active keypairs and charge it up with 100 dummy EOS tokens.

Let’s call our new EOS account: dummyaccount

curl http://faucet.cryptokylin.io/create_account?dummyaccount

{
  "msg": "succeeded",
  "keys": {
    "active_key": {
      "public": "EOS7kNBssiunoW7VGcx79BXGUvjbgcaPva4azRwhuTXRfJJ192DJ2",
      "private": "5J1SYvRP1JpWBtk85a4zAbXUmAyBqtr3r58hLuDF5YX6HdcfTYo"
    },
    "owner_key": {
      "public": "EOS6nUXrdodNwRspd7Z42Yp8nRH44wuJNYYoVHSMddr28KKS6Ke4J",
      "private": "5KQzVMR9sZ8sRmRb3NQEzyW43peUow6pYLo831AAXGyEZP7h77z"
    }
  },
  "account": "dummyaccount"
}

curl http://faucet.cryptokylin.io/get_token?dummyaccount

{ "msg": "succeeded" }

Save your @owner and @active keypairs somewhere safe, you’ll need them for the next steps.

2. Wallet and CLI

Next we will download and install the eosc command line wallet, by EOS Canada, in order to interact with the EOS blockchain (currently v1.1.0). This will help us to safely store our private keys and send transactions to the blockchain.

mkdir eosc && cd eosc
curl -LO https://github.com/eoscanada/eosc/releases/download/v1.1.0/eosc_1.1.0_linux_x86_64.tar.gz
tar xzvf ./eosc_1.1.0_linux_x86_64.tar.gz

Now we can use it to import our EOS account via the @active key. This will create a file, named eosc-vault.json, which will contain your encrypted private key.

./eosc vault create --import

- Paste your @active private key from above.
  5J1SYvRP1JpWBtk85a4zAbXUmAyBqtr3r58hLuDF5YX6HdcfTYo
- Hit ENTER.
- Choose a passphrase

3. Account Setup

Here we will issue three ./eosc commands, to setup our account for the deployment of a smart contract. We delegate 20 EOS tokens as blockchain resources (5 EOS staked for NET, 15 EOS staked for CPU) and use some more EOS tokens to buy 500 KiB of RAM as storage for our smart contract. Finally, we check our account with the eosc get account command.

Hint: We need approximately 10x the bytes of RAM as is the filesize of our WASM binary contract, due to the overhead of the virtual machine. So if our compiled contract file (e.g. hello.wasm) has a filesize of 10 KiB, we need approximately 100 KiB in RAM resources on the EOSIO blockchain, to deploy the contract.

./eosc -u https://kylin.eoscanada.com system delegatebw dummyaccount dummyaccount 5 15

./eosc -u https://kylin.eoscanada.com system buyrambytes dummyaccount dummyaccount 512000

./eosc -u https://kylin.eoscanada.com get account dummyaccount
privileged:   false
created at:   2018-11-15 14:45:25 +0000 UTC

permissions:
     "owner" w/1         :  +1 EOS6nUXrdodNwRspd7Z42Yp8nRH44wuJNYYoVHSMddr28KKS6Ke4J
           "active" w/1  :  +1 EOS7kNBssiunoW7VGcx79BXGUvjbgcaPva4azRwhuTXRfJJ192DJ2

memory:
      quota:           506.8  KB   used:           3.490  KB

net bandwidth:
      staked:              5.0000  EOS    (total stake delegated from account to self)
      delegated:           1.0000  EOS    (total stake delegated to account from others)
      used:                   257  bytes
      available:            11.18  MB
      limit:                11.18  MB

cpu bandwidth:
      staked:             15.0000  EOS  (total stake delegated from account to self)
      delegated:           1.0000  EOS  (total stake delegated to account from others)
      used:                 1.129  ms
      available:            807.2  ms
      limit:                808.3  ms

EOS balances:
      liquid:             67.8553  EOS
      staked:             20.0000  EOS
      unstaking:           0.0000  EOS
      total:              87.8553  EOS

voted for:
      

voter info:
      proxy:                
      is proxy:             false
      staked:               200000
      vote weight:          0.000000
      proxied vote weight:  0.000000

4. Contract Development Toolkit

Download and install the latest version of eosio.cdt (currently v1.4.1). This will give you access to the smart contract WASM and ABI compilers/generators, as well as to the eosio C/C++ libraries and header files. Get it at: https://github.com/EOSIO/eosio.cdt/releases

curl -LO https://github.com/EOSIO/eosio.cdt/releases/download/v1.4.1/eosio.cdt-1.4.1.x86_64.deb
sudo dpkg -i ./eosio.cdt-1.4.1.x86_64.deb

5. Compile and Deploy a Smart Contract

Let’s create a simple “Hello World” smart contract, by creating a file with the following contents, named hello.cpp:

#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>

using namespace eosio;

class hello : public contract {
  public:
      using contract::contract;

      [[eosio::action]]
      void hi( name user ) {
         print( "Hello, ", name{user});
      }

      [[eosio::action]]
      void yo( name user ) {
         print( "Yo, ", name{user});
      }
};
EOSIO_DISPATCH( hello, (hi)(yo) )

This C++ file can now be compiled and deployed to the EOS blockchain, using the eosio.cdt Contract Development Toolkit. After compilation we will get a binary WASM file hello.wasm of about 2.3 KiB (needs ~23 KiB of eosio RAM) and a file named hello.abi, which describes the interface of our code’s actions.

eosio-cpp -o hello.wasm hello.cpp --abigen

./eosc -u https://kylin.eoscanada.com system setcontract dummyaccount ./hello.wasm ./hello.abi

./eosc -u https://kylin.eoscanada.com tx create dummyaccount yo '{"user":"bob"}' -p dummyaccount

Congratulations!

After finishing the five simple steps above, you can now officially call yourself a “Blockchain Expert”. ­čśë

Feel free to experiment with the above mentioned tools, keep on improving your EOSIO knowledge with help of the hyperlinks I put into the article and continue to develop you very own EOS smart contracts!

If you liked this tutorial, please consider a donation to my EOS account: teammaerdian

Die besten Quick Wins in der Suchmaschinenoptimierung (SEO)

Obwohl SEO eine Wissenschaft f├╝r sich ist, kann jeder Webseitenbetreiber bereits mit wenigen Kniffen einen positiven Beitrag f├╝r das eigene Ranking bei Google leisten.

1. Index ├╝berpr├╝fen

Jeder Webseitenbetreiber sollte wissen welche Seiten der Domain sich im Google Index befinden. Bei kleineren Seiten kann dies ganz einfach ├╝ber die Siteabfrage selbst ├╝berpr├╝ft werden. Dazu muss folgendes in die Google Suche eingegeben werden:

site:beispieldomain.com (ohne www.)

Nun kann ├╝berpr├╝ft werden, welche Seiten im Index sind. Alle unerw├╝nschten Seiten k├Ânnen durch folgenden Zusatz im Quelltext im Bereich Head von der Indexierung ausgeschlossen werden:

<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">

2. Jede Seite hat ein eigenes Thema

Dieser Punkt ist wichtig und wird h├Ąufig vernachl├Ąssigt. Jede Seite der Domain muss ein individuelles Thema besitzen. Das Hauptkeyword muss dann auch entsprechend im Meta Title und auch in der Description prominent platziert werden.

Das ist einer einfachsten Punkte um Google und dem User die Seiten zu beschreiben und den ersten Schritt in ein Ranking f├╝r dieses Keyword zu leisten. Keine Seite hat es verdient nur ÔÇ×HomeÔÇť oder ÔÇ×Seite 1ÔÇť genannt zu werden. Daher:

Meta Title: Wichtig f├╝r User und Suchmaschine / Muss Keyword enthalten / Bis zu 60 Zeichen

<meta name=ÔÇŁtitleÔÇŁ content=ÔÇŁThema meiner SeiteÔÇŁ>

Meta Description: Wichtig f├╝r User / Keyword und Call to Action einbauen / Bis zu 300 Zeichen

3. ├ťberschriften sinnvoll strukturieren

Mit den ├ťberschriften-Tags (h-Tags) k├Ânnen die ├ťberschriften strukturiert werden. Wichtig ist, dass jede Seite nur eine einzige h1-├ťberschrift enth├Ąlt. Au├čerdem sollte sowohl die h1 als auch die h2 zwingend das Keyword der Seite enthalten.

Bei der Erstellung der Tags kann wie bei einem Zeitungsartikel vorgegangen werden. Die Headline ist die h1, die Zwischen├╝berschriften die h2 und die weiteren ├ťberschriften und Aufz├Ąhlungen bekommen h3 und h4 Tags.

4. Content ist noch immer King

F├╝r jede Seite sollte individueller und einzigartiger Content erstellt werden. Hier ist ein gro├čer Umfang definitiv besser aber das ganze darf am Ende auch nicht in einer Textw├╝ste enden. Generell gilt: Es soll so viel wie m├Âglich gesagt werden um ein Thema umfassend zu beschreiben. Dabei sollte auch auf die Verwendung der Keywords im Text und in den ├ťberschriften (siehe vorherigen Punkt) geachtet werden. Es lohnt sich an dieser Stelle auch ein Blick auf die Konkurrenz. Einfach dazu mal den gew├╝nschten Suchbegriff googlen und sich bei den ersten 10 Suchergebnissen folgende Fragen stellen:

  • Wie sind die Texte strukturiert
  • Welche Themen behandeln die Texte
  • Wie lang sind die Texte
  • Welche Keywords werden verwendet

Bei l├Ąngeren Texten lohnt es sich auch immer mit Bildern, Aufz├Ąhlungen und Videos zu arbeiten. Die Texte m├╝ssen den Usern Spa├č machen ÔÇô dann bleiben sie auch auf der Seite

5. Direkter Draht zu Google durch die Search Console

Hierbei handelt es sich um ein kostenloses Tool von Google, das sehr einfach zu implementieren ist. Webmaster erhalten hier wertvolle Informationen zur Domain, zu dem Traffic und auch zu technischen Punkten sowie m├Âglichen Fehlern. Auch von rechtlicher Seite gibt es keine Probleme ÔÇô es m├╝ssen hierbei keine Punkte zum Thema Datenschutz beachtet werden.

Mit diesen Tipps kann jeder die ersten wichtigen Grundbausteine f├╝r eine stabiles Fundament im SEO legen. Bei schwierigen und individuellen Fragen sollte allerdings eine professionelle SEO Agentur beauftragt werden.

AdWords f├╝r Einsteiger ÔÇô so gelingt der Einstieg

Online Shops bekommen ├╝ber 60 Prozent der Besucher von Suchmaschinen geliefert. Da die Markenbekanntheit noch nicht so gro├č ist am Anfang, setzen viele neue und junge Unternehmen auf diese Werbeform. Gerade am Anfang muss das Unternehmen viele Auftr├Ąge bekommen, damit Geld in das Unternehmen reinflie├čen kann. Dies muss auch recht schnell geschehen. Mit AdWords gelingt das, weil die bezahlten Anzeigen ganz oben in den Suchergebnissen erscheinen werden.

AdWords stellt ein Auktionssystem dar, welches bei jedem Klick des Suchenden versteigert wird. Umso mehr man bereits ist f├╝r einen Klick zu zahlen, desto weiter oben wird die Anzeige stehen.

Viele Anf├Ąnger machen leider den Fehler, dass sie viele Themen in jeder Anzeigengruppe erstellen. Dies ist ein sehr gro├čer Fehler. Dar├╝ber hinaus wirken die erstellen Kampagnen dann auch nicht strukturiert. Grunds├Ątzlich werden Anzeigen immer pro Anzeigengruppe geschaltet und nicht pro Keyword. Daher muss jedes Keywords in einer Gruppe ganz genau zu den Anzeigen passen. Sollte dies nicht der Fall sein, dann geh├Ârt das Keyword nicht in die entsprechende Gruppe.

Sollte die Anzeige nicht zum Keyword passen, dann wird der Besucher auch nicht so oft auf die Anzeige klicken. Es fehlt der Anzeige in diesem Fall an Relevanz. Dadurch kommt es zu einer niedrigen CTR, welche sich negativ auf die Anzeigengruppe auswirkt.

Ein weiterer Fehler ist es viel zu allgemeine Keywords zu verwenden. In diesem Fall ist es auch nicht m├Âglich die Relevanz zu erh├Âhen. Wichtig ist es bei den Keywords und bei den Anzeigen so konkret wie m├Âglich zu werden. Wenn man beispielsweise ganz spezielle Schuhe f├╝r den Medizinbereich verkauft, dann sollte man nicht das Keyword ÔÇ×SchuheÔÇť verwenden, sondern besser spezifischer werden. So k├Ânnte man stattdessen ein Long Tail Keyword wie ÔÇ×Schuhe f├╝r ZahnharztÔÇť einsetzen oder so etwas ├ähnliches. Auf diese Weise wird die Streuung verkleinert und die Relevanz erh├Âht. Letztendlich ist es auch nicht die gro├če Masse, die sich solche Schuhe kaufen wird. Die Zielgruppe ist wesentlich kleiner. Mit den passenden Keywords kann die richtige Zielgruppe auch richtig adressiert werden.

Grunds├Ątzlich ist AdWords eine Wissenschaft f├╝r sich. Es gilt daher f├╝r die effektive Nutzung eine spezialisierte AdWords Agentur aus Osnabr├╝ck in Anspruch zu nehmen.

Freifunk mit Ubiquiti UniFi AP

Freifunk.net

Inhalt

Was ist Freifunk.net?

Die Initiative Freifunk.net ist ein nicht-komerzielles, gemeinschaftliches Projekt vieler Freiwilliger, die sich zum Ziel gesetzt haben ein unabh├Ąngiges und dezentrales WLAN-Netzwerk aufzubauen, welches von Jederman frei zug├Ąnglich, unzensiert und anonym verwendet werden kann und au├čerdem die Netzneutralit├Ąt wahrt. Die Initiative ist dabei in lokalen Freifunk-Communities organisiert, welche in jeder gr├Â├čeren und kleineren Stadt anzutreffen sind.

Das Freifunk-Netz erstreckt sich bereits ├╝ber ganz Deutschland und w├Ąchst mit jedem Unterst├╝tzer ein St├╝ckchen weiter. Ob auch in deiner N├Ąhe schon ein Freifunk-Zugangspunkt ist, ├╝ber den du ohne Anmeldung einen freien Internet-Zugang bekommen kannst, erf├Ąhrst du auf der Freifunk-Karte!

Mitmachen darf jeder! Zum Unterst├╝tzen der Idee tritt man am besten mit seiner lokalen Freifunk-Community in Kontakt. Dort kann man sich informieren und austauschen und im Regelfall auch einen eigenen, vorkonfigurierten Freifunk-Router ab 20ÔéČ beziehen. Schau also einfach vorbei, z.B. bei Freifunk-M├╝nchen!

Freifunk verbindet!

Freifunk Technik

Freifunk ist als Mesh-Netzwerk konzipiert. Das bedeutet, dass sich benachbarte Freifunk-Router (Knoten) automatisch miteinander verbinden. Netzwerk-Pakete werden dann auf ihrem Weg vom Benutzer (z.B. Smartphone) von Knoten zu Knoten weitergeleitet bis sie ihr Ziel (z.B. Wikipedia) erreichen. Um auch in Situationen in denen keine benachbarten Freifunk-Knoten in Reichweite sind einen Zugang zum Freifunk-Netz zu bekommen, betreiben die Freifunk Communities VPN-Gateways. Isolierte Knoten k├Ânnen so ├╝ber den privaten Internetzugang des Knoten-Betreibers eine verschl├╝sselte VPN-Verbindung zum restlichen Freifunk-Netz herstellen. Vom VPN-Gateway aus kann ÔÇô ├╝ber eine Verbindung ins Ausland ÔÇô auch das Internet erreicht werden. Auf diese Weise wird geschickt das rechtliche Problem der deutschen St├Ârerhaftung umgangen.

Auf Freifunk-Routern l├Ąuft eine speziell angepasste Version der freien OpenWrt Firmware, namens Gluon. Gluon stellt dabei eine stark vereinfachte Web-Oberfl├Ąche bereit, welche zum Einrichten und Konfigurieren eines Freifunk-Knotens verwendet werden kann. Au├čerdem enth├Ąlt Gluon einen Autoupdater, welcher den eigenen Freifunk-Knoten immer automatisch auf den aktuellen Softwarestand updatet. F├╝r erfahrene Benutzer gibt es zus├Ątzlich die M├Âglichkeit sich per SSH auf dem Router einzuloggen, um den vollen Funktionsumfang von OpenWrt auszunutzen.

Unterst├╝tzte Hardware

Durch die OpenWrt Basis der Freifunk Firmware “Gluon” gibt es eine breite Auswahl an unterst├╝tzen Routern. Zu den gel├Ąufigsten Modellen z├Ąhlen Router der Firmen TP-Link und Ubiquiti Networks. Welche Router im einzelnen unterst├╝tzt werden erf├Ąhrt man auf der Website der lokalen Freifunk-Community. Wegen eines sehr guten Preis-Leistungs-Verh├Ąltnisses (Preis < 20ÔéČ) erfreut sich der Router “TP-Link TL-WR841N” zur Zeit sehr gro├čer Beliebtheit.

Ubnt UniFi APIch habe mich f├╝r meinen ersten Freifunk-Knoten f├╝r das Modell “Ubiquiti UniFi AP Long Range” (Ubnt UAP-LR) entschieden. Dieser bietet eine sehr gute Reichweite von bis zu 180m, eine leichte Verkabelung dank Stromversorgung ├╝ber das Netzwerkkabel und wird offiziell von meiner Freifunk-Community (Freifunk-M├╝nchen) unterst├╝tzt. Die Freifunk Installation und Konfiguration dieses Routers m├Âchte ich im folgenden exemplarisch f├╝r “Freifunk-M├╝nchen” erl├Ąutern.

UniFi Router flashen

Nach dem Auspacken und Anschlie├čen des UniFi AP ans lokale Heim-Netzwerk bekommt dieser per DHCP automatisch eine IP-Adresse zugewiesen (<UAP-IP>), welche in der Web-Oberfl├Ąche des privaten Internet-Routers (z.B. FritzBox) nachgeschaut werden kann. Mit einem Linux-Computer erfolgt die Installation der Freifunk Firmware (Gluon) auf dem UniFi AP danach in 3 einfachen Schritten:

  1. Via SSH in die original Software des UAP einloggen:
    ssh ubnt@<UAP-IP> #(Passwort: ubnt)
  2. UniFi Factory-Firmware der lokalen Freifunk-Community ins /tmp Verzeichnis des Routers downloaden, z.B.:
    cd /tmp
    wget http://firmware.ffmuc.net/stable/factory/gluon-ffmuc-v2015.2-ubiquiti-unifi.bin
  3. Freifunk-Firmware auf den Router flashen:
    fwupdate.real -m gluon-ffmuc-v2015.2-ubiquiti-unifi.bin -d

Nachdem das Kommando ‘fwupdate.real’ erfolgreich ausgef├╝hrt wurde, gibt es das Wort “Done” aus und der Router kann vom Strom-/Netzwerkkabel und vom Heim-Netzwerk (am PoE-Adapter) getrennt werden. (Quelle)

UniFi Router konfigurieren

Anstelle vom Heim-Netzwerk (z.B. FritzBox) sollte der Router jetzt direkt mit dem eigenen Computer verbunden werden. Nachdem das Strom-/Netzwerkkabel wieder angesteckt wurde startet der UniFi AP die neu installierte Freifunk-Firmware im Setup/Config-Mode. Alternativ erreicht man den Config-Mode durch dr├╝cken der Reset-Taste f├╝r ca. 3 Sekunden. Den Config-Mode kann man daran erkennen, dass die gr├╝ne LED des Routers blinkt (ca. 1x pro Sekunde).

Gluon Web UIIm Config-Mode hat der UAP die IP-Adresse 192.168.1.1 und betreibt einen DHCP-Server, so dass der eigene Computer automatisch eine IP-Adresse aus dem Bereich 192.168.1.x/24 zugewiesen bekommen sollte. Alternativ kann dem eigenen Computer auch manuell eine IP-Adresse aus diesem Bereich gegeben werden (z.B. 192.168.1.100). Steht die Verbindung zwischen Computer und Router, kann die Gluon Web-Oberfl├Ąche auf http://192.168.1.1 erreicht werden.

Die Gluon Web-Oberfl├Ąche stellt verschiedene Felder zum Konfigurieren des Knoten bereit (Name, Kontakt, Geo-Koordinaten, Bandbreitenlimitierung, …) und ist weitgehend selbsterkl├Ąrend. Nach abschlie├čen der Konfiguration muss der Router nochmals neu gestartet werden. Auch kann er nun wieder mit dem lokalen Heim-Netzwerk verbunden werden, so dass er ggf. ├╝bers Internet eine Verbindung zum Freifunk-VPN-Gateway herstellen kann. Der Router startet nun in den Normal-Mode: Die gr├╝ne LED leuchtet dauerhaft.

F├╝r erfahrene Benutzer gibt es zus├Ątzlich zum Normal-Mode und Config-Mode auch noch den Failsafe-Mode. Dieser kann erreicht werden wenn im Bootvorgang des Routers mehrfach die Reset-Taste gedr├╝ckt wird. Im Failsafe-Mode blinkt die gr├╝ne LED sehr schnell (schneller als 1x pro Sekunde). In diesem Modus sind alle Services deaktiviert und der Router ist nur per Telnet/SSH auf 192.168.1.1 zu erreichen.
(Quelle 1, Quelle 2, Quelle 3)

Viel Spa├č mit eurem eigenen Freifunk-Knoten!