Lightning network is still being developed for bitcoin
You know how I feel about that one. I wish them good luck.
does snow have lightning network
god no
I suspect the lightning network will prove to be unsustainable and not effective
I hope to be proven wrong on that
@Fireduck I've been told that a chinese community has been made using their popular chat/social tools.
I've also had more repeated suggestions that we fix the prettiness of the website.
@Clueless which Chinese community?
I don't know, I was told via discord
I'm not chinese, I don't use those tools, I cannot read mandarin, and I cannot go talk to them. lol
no problem, I am a Chinese.
@alistar talk with the user "cool" on the discord.
Last year I came to West Virginia for almost one year.
ok
got it
:P nice
West Virginia maybe a poor state in US.lol
@alistar @Fireduck Also, I'm contemplating hiring a designer like, https://meese.co to help with branding, website design, layouts, and gui stuff.
But I love the people in WV.
I'm wondering if the community might be willing to fund it together, instead of just me out of pocket.
everyone who is running a pool should increase dev fee for marketing costs
devs can sell the snow for the costs
Can we pay with SNOW?
may cryptocurrency community hire devs with their coins.
We don't have a giant pile of premine to do that with
also, many people won't accept that as payment for now
If we done the RPC, should we run a official Custom 2 Custom platform, and take some fee in this platform.
I wouldn't expect any professional to take some small crypto as payment
as a cryptocurrency no liquidity no valuable. people will not accept SNOW.
if pay with BTC, they will happiness.
Need to work hard to promote, let more people know SNOW
I used snow to complete a payment last night.Great!
ha
I'm going back to working on rpc
I've seen people trading snow for ARO in their discord
updating sidebar
I'm probably going to cut a release today or tomorrow
Release 1.3.0 is up
Why not develop a "GUI" wallet
Easier to transfer transactions
Not my top priority
getting closer though
@cool it's not really easier.
"looks better" != "easier to use"
but there is actual psychology and study to back the fact that people create mental blocks to productive use when they perceive something as "ugly"
wiki said Requires the following config settings, rpc_port, rpc_username, rpc_password.
do we have example config settings to explain?
as proven by the voting defaults in the examples, providing examples for some parametres is too dangerous - people gotta figure it out for themselves
Hey guys, on discord Clueless was asking for marketing/design help
I’d like to help and thought I could start by creating a SnowBlossom logo and color scheme
Any input on colors and logo thoughts?
since you ask in general, how about hot pink and neon orange zebra stripes?
@CryptoQuan just to warn you, I'm looking for something rather full bodied
but we're totally open
I'm into the neon zebra stripes
Hot pink, neon orange zebra stripes and full bodied. Got it
There’s a stripper joke there somewhere
i for one do not see too much of a difference between the 80s stock market / electronic trading hype and crypto hype
so might as well go full miami on the aesthetics
yes, we need a logo.
What is the SnowBlossom Coin's short name. SBC or SNOW?
I think a symbol would be best
SNO
but feel free to hit me
hah
I like SNOW
I’m thinking this colorway would be fitting
Might be too full bodied for @Clueless
ice cream
easter
snowday
Here’s my thought for a logo
that screams neon tube
That’s the goal right?
! that reminds me
there's a neon sign company right down the street from me.
I could totally have custom neon signs made
(overkill)
I’ll throw some color at it and see what you guys think
@CryptoQuan it looks neat, but I feel most people won't understand what it stands for.
i'm not sure if i'm a party to take too seriously, but i'm all in on that sorta stuff
@Rotonen what do you mean?
When I do things, I'm a try hard.
i mean maybe i should not dictate the visual style for it is not my project
well, no one dictates, that's the glory of community stuff. :P
i'm also actively noisy :stuck_out_tongue:
@Clueless you mean you don’t think people will know it says ‘SNOW’?
I see at as a just a logo
Using a snowflake or flower (aka SnowBlossom) sounds pretty lame
@CryptoQuan Watch this: https://youtu.be/pnv5iKB2hl4 YouTube Video: Why city flags may be the worst-designed thing you've never noticed | Roman Mars
Watch all of it. :P
well, we're already going 80s miami, and snow's the context
So simpler?
@cristo watch the whole thing, it's worth it I think ;)
but basically yes
I believe that logo design has the same principles as flag design
easily recognizable, distinct, etc.
I’m with you
I’ll try a few out
examples, Microsoft, google, Skype, HP
^ HP has a several hundred page document on how to properly use their logo
they dictate the font, colors, backgrounds, placement, and more, that you use.
Good feedback
style guides are quite a bit in the future
@CryptoQuan Sure! Do forgive me. I don't mean to define the goal as some overzealous daunting task that's hard for you to do. :P
honestly I think your initial styling looks pretty cool.
my first thought was using those colors to make your picture into a neon sign. xd
Thanks! Yeah that was just a doodle. I thought the shapes represented the simplicity and modernness (is that a word?) of Snowblossom
@CryptoQuan I kinda lika it
I have April working on a different design
Thanks Fireduck, your avatar cracks me up
I live to serve
that image is probably 20 years old now
@Fireduck serve satan?
probably
The duck demon.
The duck destroyer.
the corkscrew of fire!
hmm. i am stuck with the jsonrpc.
Ok
curl -d '{ "jsonrpc": "2.0", "method":"getstats", "id":"whatever"}' -s http://localhost:13333/ | jq .result.rates.miners
and i see only the miners.
but curl -d '{ "jsonrpc": "2.0", "method":"getstats", "id":"whatever"}' -s http://localhost:13333/ | jq .result.rates.miners[1] gives:
jq: error (at <stdin>:1): Cannot index object with number
maybe you have a quick solution before i google myself to death.
I can only do super basic with jq
So I'm not the right person
ah. okay. like me. :wink:
miners is a dict
and addressing a specific one from there is trickier as the key contains a colon
an example on your hastebin: `curl -s https://hastebin.com/raw/ipukuyuzuv | jq '.result.rates.miners["snow:jsu7n2u0ffwq22r9p6wn9jtgswu6x33s0v6zhmdh"]'`
read the man page and check out `to_format[]`
ah. that worked. that you, kind sir.
the `hash[key]` formatting will always work
just use single quotes on the whole query to have your shell not jump in
as you want to pass an explicit `"` to jq there
i tried before that but i was missing the quotes.
thanks.
i recommend some moderner approach than hacking at it over shell scripts
i'm biased, but python and requests have ~everything you need out of the box
the response object in requests has a json accessor which will do ~most of the work for you to begin with
i hope i will have some time this weekend. my bash scripts for the pool are all quick and very dirty. sooner or later they will fail.
thanks for your advice.
grpc and protobuf stuff have the protocol definition files based on which you can generate the client library for you for maximal convenience
https://grpc.io/docs/tutorials/basic/python.html#generating-client-and-server-code A high performance, open source, general RPC framework that puts mobile and HTTP/2 first.
snowblossom probably has those somewhere within the repo
Yep, protolib directory
https://github.com/snowblossomcoin/snowblossom/blob/master/protolib/mining_pool.proto ``` syntax = "proto3"; option java_multiple_files = true; option java_package = "snowblossom.mining.proto"; option java_outer_classname = "SnowBlossomMiningProto"; import "protolib/snowblossom.proto"; package snowblossom; service MiningPoolService { rpc GetWork ( GetWorkRequest ) returns (stream WorkUnit) {} rpc SubmitWork ( WorkSubmitRequest ) returns ( SubmitReply ) {} } message GetWorkRequest { string client_id = 1; string pay_to_address = 2; } message WorkUnit { BlockHeader header = 1; int32 work_id = 2; bytes report_target = 3; } message WorkSubmitRequest { BlockHeader header = 1; int32 work_id = 2; } message PPLNSState { repeated ShareEntry share_entries = 1; } message ShareEntry { string address = 1; int64 share_count = 2; } service SharedMiningService { rpc GetWords ( GetWordsRequest ) returns ( GetWordsResponce ) {} } message GetWordsRequest { repeated int64 word_indexes = 1; int32 field = 2; } message GetWordsResponce { repeated bytes words = 1; } ```
that looks the part
huh, where are the stats defined?
The jsonrpc stuff? That is hand coded
in ye olden speak: plz
Grpc is the formal correct proty stuff
Jsanrpc is bastard step child living under stairs
I guess I could have defined the structure in protobuf and just converted to json
transforms are the tool you seek
or seems google calls them transcoding mappings, fair enough, but smells like XSLT to me
but i suppose jamming jetty in there does fatten things up a lot
Yeah, I get cranky when I have to deal with anything remotely like XSLT.
The code sufficently short that I don't think it will be improved by using any other layers
https://github.com/snowblossomcoin/snowblossom/blob/master/client/src/RpcServerHandler.java ``` package snowblossom.client; import com.thetransactioncompany.jsonrpc2.JSONRPC2Request; import com.thetransactioncompany.jsonrpc2.JSONRPC2Response; import com.thetransactioncompany.jsonrpc2.server.RequestHandler; import com.thetransactioncompany.jsonrpc2.server.MessageContext; import net.minidev.json.JSONObject; import snowblossom.proto.*; import snowblossom.lib.*; import duckutil.jsonrpc.JsonRpcServer; import duckutil.jsonrpc.JsonRequestHandler; import java.util.Map; import java.util.LinkedList; import com.google.protobuf.util.JsonFormat; import net.minidev.json.parser.JSONParser; public class RpcServerHandler { private SnowBlossomClient client; public RpcServerHandler(SnowBlossomClient client) { this.client = client; } public void registerHandlers(JsonRpcServer json_server) { json_server.register(new GetFreshHandler()); json_server.register(new BalanceHandler()); json_server.register(new SendHandler()); } public class GetFreshHandler extends JsonRequestHandler { public String[] handledRequests() { return new String[]{"getfresh"}; } @Override protected JSONObject processRequest(JSONRPC2Request req, MessageContext ctx) throws Exception { boolean mark_used = false; boolean generate_now = false; if (req.getNamedParams() != null) { if (req.getNamedParams().containsKey("mark_used")) { mark_used = (boolean) req.getNamedParams().get("mark_used"); } if (req.getNamedParams().containsKey("generate_now")) { generate_now = (boolean) req.getNamedParams().get("generate_now"); } } JSONObject reply = new JSONObject(); reply.put("mark_used", mark_used); reply.put("generate_now", generate_now); AddressSpecHash spec_hash = client.getPurse().getUnusedAddress(mark_used, generate_now); String address = AddressUtil.getAddressString(client.getParams().getAddressPrefix(), spec_hash); reply.put("address", address); return reply; } } public class BalanceHandler extends JsonRequestHandler { public String[] handledRequests() { return new String[]{"balance"}; } @Override protected JSONObject processRequest(JSONRPC2Request req, MessageContext ctx) throws Exception { JSONObject reply = new JSONObject(); BalanceInfo bi = client.getBalance(); reply.put("flake_confirmed", bi.getConfirmed()); reply.put("flake_unconfirmed", bi.getUnconfirmed()); reply.put("flake_spendable", bi.getSpendable()); reply.put("confirmed", bi.getConfirmed() / Globals.SNOW_VALUE_D); reply.put("unconfirmed", bi.getUnconfirmed() / Globals.SNOW_VALUE_D); reply.put("spendable", bi.getSpendable() / Globals.SNOW_VALUE_D); return reply; } } public class SendHandler extends JsonRequestHandler { public String[] handledRequests() { return new String[]{"send"}; } @Override protected JSONObject processRequest(JSONRPC2Request req, MessageContext ctx) throws Exception { JSONObject reply = new JSONObject(); if (req.getNamedParams() == null) { throw new Exception("Send requires parameters"); } Map<String, Object> params = req.getNamedParams(); Map<String, Object> to_map = (Map)params.get("to"); boolean broadcast = true; if (params.containsKey("broadcast")) { broadcast = (boolean) req.getNamedParams().get("broadcast"); } LinkedList<TransactionOutput> out_list = new LinkedList<>(); for(Map.Entry<String, Object> me : to_map.entrySet()) { String address = me.getKey(); double value = (double)me.getValue(); AddressSpecHash spec_hash = new AddressSpecHash(address, client.getParams()); long flakes = Math.round(value * Globals.SNOW_VALUE); out_list.add(TransactionOutput.newBuilder().setValue(flakes).setRecipientSpecHash(spec_hash.getBytes()).build()); } long fee = 0; Transaction tx = client.getPurse().send(out_list, fee, broadcast); reply.put("tx_hash", HexUtil.getHexString(tx.getTxHash())); reply.put("tx_data", HexUtil.getHexString(tx.toByteString())); /*JsonFormat.Printer printer = JsonFormat.printer(); String json_str = printer.print(TransactionUtil.getInner(tx)); JSONParser parser = new JSONParser(JSONParser.MODE_STRICTEST); JSONObject tx_json = (JSONObject)parser.parse(json_str); reply.put("tx_json", tx_json);*/ return reply; } } } ```
@Fireduck as far as i can see grpc already has the json transform baked in, you just explicitly need to declare them
You might be right
But I also needed to do basic http auth