Thread: Technical Feedback

hi harmony developers,

we’ll use this thread to post any feedback on anything related to the harmony development experience from an application developer’s point of view.

you may post about:

  1. tooling
  2. documentation
  3. any other support or improvements for the developer experience
2 Likes

RPC

  1. Document that eth_ method prefixes also work. As I understand they essentially correspond to hmy and not hmyv2.
  2. Document transaction creation (fields + RLP). Since we have 2 new fields - it might be worth to describe how this is done rather than saying “same as in ETH but with two extra field” which basically refers people to read ETH docs.
  3. Document which methods are specific to Harmony - this one is quite important.

Python world:

  1. Current Python SDK is undocumented and requires full node running.
    • This might be ok for stake pools to use but regular developer that wants to play around or interact with blockchain would be better off using RPC - Suggestion would be to document usage of web3py with Harmony - AFAIK this is currently feasible for some methods.
    • Consider potential fork of web3py to accomodate Harmony specific things like staking and shards. This is big healthy project with 2k+ stars.

UI stuff:

  1. UI Fix on webiste, this doesnt look good:
  2. I think video on main website is a bit too much an is too big, I am personally not big fan of it.
  3. In my opinion Resources item on the bottom should be replace scroll links on the top. There is some very important stuff in there that some people may miss.

This is all I have for you guys, keep up good work. I love this project <3!

Hello Everybody,

I am still struggeling to get my developer environment up and running.
But I make progress (yey). Here is what I tried so far and where I got stuck:

Docker Container on Windows:

OS: Win10

Shell: PowerShell

Docker: 20.10.5

What did I do?


git clone https://github.com/harmony-one/mcl.git

git clone https://github.com/harmony-one/bls.git

git clone https://github.com/harmony-one/harmony.git

Then I ran as

Result:


> [24/37] RUN eval "$(~/bin/gimme 1.16.3)" ; scripts/go_executable_build.sh -S:

#28 0.348 go version go1.16.3 linux/amd64

#28 0.418 building ./cmd/harmony

#28 0.575 api/service/legacysync/syncing.go:14:2: missing go.sum entry for module providing package github.com/Workiva/go-datastructures/queue (imported by github.com/harmony-one/harmony/api/service/legacysync); to add:

#28 0.575 go get github.com/harmony-one/harmony/api/service/legacysync

#28 0.575 internal/blsgen/kms.go:10:2: missing go.sum entry for module providing package github.com/aws/aws-sdk-go/aws (imported by github.com/harmony-one/harmony/internal/blsgen); to add:

…

executor failed running [/bin/bash -c eval "$(~/bin/gimme ${GIMME_GO_VERSION})" ; scripts/go_executable_build.sh -S]: exit code: 1

Docker Container on Ubuntu

OS: Ubuntu 20.04.2 LTS

Shell: GNU bash, version 4.4.0(1)-release (x86_64-unknown-linux-gnu)

Docker: Docker version 20.10.7, build f0df350

Step 38/57 : RUN eval "$(~/bin/gimme ${GIMME_GO_VERSION})" ; scripts/go_executable_build.sh -S
 ---> Running in 3192770892e7
go version go1.16.3 linux/amd64
building ./cmd/harmony
api/service/legacysync/syncing.go:14:2: missing go.sum entry for module providing package github.com/Workiva/go-datastructures/queue (imported by github.com/harmony-one/harmony/api/service/legacysync); to add:
	go get github.com/harmony-one/harmony/api/service/legacysync
...
The command '/bin/bash -c eval "$(~/bin/gimme ${GIMME_GO_VERSION})" ; scripts/go_executable_build.sh -S' returned a non-zero code: 1

Here also the go_executable_build.sh is fails to run.
In my understanding, this all runs inside the docker container and should
therefore execute no matter of my setup. Or am I mistaken?

Localnet with make debug works, but cannot access Funds

On Ubuntu I get the local net with ‘make debug’ running.
And can create wallets with MetaMask and OneWallet :exploding_head: great success!

But then I was in desperate need for Funds and on Discord CatterM had the same Problem and Ganesha already replied, that we may use the preexisting wallets, that are signing blocks, thus generating funds having keystore files @.hmy/keystore without a passphrase.

Importing file into wallet

I couldn’t import those files directly into MetaMask nor One Wallet:

  1. MetaMask requires a passphrase for keystore files.
  2. One Wallet (connected to Localnet) told me that the file is invalid.

Extracting private key from files and then importing into wallet

I wrote a small node script to extract the private key from the keystore files with web3:

const Web3 = require('web3');
let web3 = new Web3('ws://localhost:9800');
console.log(web3.eth.accounts.decrypt( keystoreJSON, "" )

Which worked just fine. But the wallet had a ONE balance of 0.

That’s my current learning progess :smiley:

Greetings,
Sev

Development Environment using Ganache

Ganache support was implemented by a bounty here:

No Issue section in the repository

OS: Ubuntu

I have multiple errors setting this up, even following the video step by step:
https://github.com/harmony-one/harmony-one-ganache-support/blob/main/docs/demo-ganache-harmony.mp4

Approaches

I had both approaches:

  1. Downloading the AppImage file and running it
  2. Building the AppImage from source

Issue

Ganache starts as expected. But when starting the harmony-one node it crashes:

docker run --name harmony-localnet-ganache --rm -d -p 9500:9500 -p 9800:9800 -p 9801:9801 -p 9501:9501 harmonyone/localnet-ganache
Unable to find image ‘harmonyone/localnet-ganache:latest’ locally

However, the created image is named ‘harmonyone/localnet-test’