poc-consortium / nogrod Goto Github PK
View Code? Open in Web Editor NEWThe all-new PoCC pool software; "Fortunes are mined here"
License: Other
The all-new PoCC pool software; "Fortunes are mined here"
License: Other
# make -j 6
make build
make[1]: Entering directory '/root/goburstpool-1.3.0'
git submodule update --init --recursive
package github.com/golang-migrate/migrate/v3/database: cannot find package "github.com/golang-migrate/migrate/v3/database" in any of:
/usr/lib/go-1.9/src/github.com/golang-migrate/migrate/v3/database (from $GOROOT)
/root/goburstpool-1.3.0/vendor/src/github.com/golang-migrate/migrate/v3/database (from $GOPATH)
/root/goburstpool-1.3.0/src/github.com/golang-migrate/migrate/v3/database
package github.com/golang-migrate/migrate/v3/source: cannot find package "github.com/golang-migrate/migrate/v3/source" in any of:
/usr/lib/go-1.9/src/github.com/golang-migrate/migrate/v3/source (from $GOROOT)
/root/goburstpool-1.3.0/vendor/src/github.com/golang-migrate/migrate/v3/source (from $GOPATH)
/root/goburstpool-1.3.0/src/github.com/golang-migrate/migrate/v3/source
Makefile:41: recipe for target 'deps' failed
make[1]: *** [deps] Error 1
make[1]: Leaving directory '/root/goburstpool-1.3.0'
Makefile:16: recipe for target 'start' failed
make: *** [start] Error 2
# migrate -version
3.5.2
# go version
go version go1.9.2 linux/amd64
utils.c: In function ‘calculate_deadlines_sse4’: utils.c:134:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result1 = *(uint64_t *)final11; ^ utils.c:135:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result2 = *(uint64_t *)final22; ^ utils.c:136:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result3 = *(uint64_t *)final33; ^ utils.c:137:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result4 = *(uint64_t *)final44; ^ utils.c: In function ‘calculate_deadlines_avx2’: utils.c:274:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result1 = *(uint64_t *)final11; ^ utils.c:275:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result2 = *(uint64_t *)final22; ^ utils.c:276:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result3 = *(uint64_t *)final33; ^ utils.c:277:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result4 = *(uint64_t *)final44; ^ utils.c:278:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result5 = *(uint64_t *)final55; ^ utils.c:279:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result6 = *(uint64_t *)final66; ^ utils.c:280:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result7 = *(uint64_t *)final77; ^ utils.c:281:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] uint64_t target_result8 = *(uint64_t *)final88;
`goroutine 64 [IO wait]:
internal/poll.runtime_pollWait(0x7f54238668b0, 0x72, 0x0)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420f94718, 0x72, 0xffffffffffffff00, 0xeafc60, 0xeaa318)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc420f94718, 0xc420f74c00, 0x1, 0x1)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420f94700, 0xc420f74c71, 0x1, 0x1, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc420f94700, 0xc420f74c71, 0x1, 0x1, 0xc42007c060, 0x20002, 0xc4204917a4)
/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc420f76040, 0xc420f74c71, 0x1, 0x1, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc420f74c60)
/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:656 +0xd8
rax 0x7f5420ec55e0
rbx 0x7f5420ec55a0
rcx 0x7f5420ec5620
rdx 0x7f5420ec55e0
rdi 0x7f5420ec55a0
rsi 0x7f5420ec55a0
rbp 0x7f5420ec52f0
rsp 0x7f5420ec4bf8
r8 0x7f5420ec5660
r9 0x0
r10 0x7f5420ec51c0
r11 0x7f54231b0620
r12 0x7f5420ec50c0
r13 0x100
r14 0x7f5420ec5620
r15 0x7f5420ec5660
rip 0x8ad9c4
rflags 0x10213
cs 0xe033
fs 0x0
gs 0x0
Makefile:11: recipe for target 'start' failed
`
Respectfully request automated dynamic minerTxFee based on the number of active miners against the poolTxFee.
Example equation:
poolTxFee / #activeMiners = minerTxFee
Simulated example:
0.1 / 25 = 0.004
Currenly I'm doing this manually for the pool with the newest commit available.
Thank you POCC developer team for all the hard work and making awesome refined pool software for the community :)
V/r,
Khomitchr
The "All Miners" Tab does not auto refresh metrics. End user has to constantly click on any other tab and back to force a refresh. Recommend setting auto refresh at each new Block Height the pool reaches or every few minutes. Same issue with the "History" Tab.
Thank you,
V/r,
khomitchr
I'm currently integrating some additional info to the CreepMiner interface by showing my current pending bursts in it. Right now, this has to work the following way:
Reading in e.g. "https://50-50-pool.burst.cryptoguru.org/miners" completely by a powershell script, parsing the HTML code for my BURST-Address and extracting the pending bursts.
It would be way easier if I had access to the websocket interface via e.g. "https://50-50-pool.burst.cryptoguru.org/ws". Unfortunately, I'm not allowed to connect and it just throws an 403/forbidden error, when I just run this simple line of code locally in my browser:
var s = new WebSocket('wss://50-50-pool.burst.cryptoguru.org/ws');
In fact, this code does indeed work if I run it in the JS console in my browser, when I have opened the corresponding pool though.
So I guess, this might be the reason for not having CORS enabled. Enabling it would help.
Alternatively to just enabling the websocket interface to everyone, and additional listener on e.g. "50-50-pool.burst.cryptoguru.org/api" might be good (yet it would either need CORS enabled or use jsonp for external communicating).
I'm looking forward,
cheers
Would it be possible in a future release of the pool to record in the nonce_submission table the IP of the miner that submitted it? One of the miners on my pool, who knows what he's doing, has suddenly started getting DL's orders of magnitudes over his deadline limit, and it skews the hell out of his estimated capacity. His 360TB+ was down to 28TB estimated. I think someone sabotaging him - ie submitting bad DL's every round in the hope of him not getting one of his accepted, and therefore the bad DL is credited to his estimate - is low, but I can't rule it out. Would be useful to see where good vs abnormal submissions originated from.
# go version
go version go1.11.2 linux/amd64
mysql -v
Server version: 10.0.36-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Running on Ubuntu Server 16.04.5 LTS
This is a new database that Nogrod is running on. I created the database with Collation set to utf8mb4_general_ci. When I start Nogrod it created the tables. Ran good for about a day now im getting this, and then it dies.
{"level":"info","ts":1544463455.2362452,"caller":"wallethandler/wallethandler.go:216","msg":"checking if block was won","generator":6870823970895666698,"nonce":12579318641387556672,"expected generator":3738294266252060771,"expected nonce":16151709031885217736,"was won":false,"height":565328}
panic: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF EXISTS(SELECT 1 FROM block WHERE height = ?) THEN
UPD' at line 1
goroutine 59 [running]:
github.com/jmoiron/sqlx.MustExec(0xb606e0, 0xc0002680c0, 0xad2c95, 0x122, 0xc001f00680, 0x4, 0x4, 0xc001e1ce00, 0xc001f25f38)
/root/go/pkg/mod/github.com/jmoiron/[email protected]/sqlx.go:718 +0xba
github.com/jmoiron/sqlx.(*DB).MustExec(0xc0002680c0, 0xad2c95, 0x122, 0xc001f00680, 0x4, 0x4, 0x0, 0x0)
/root/go/pkg/mod/github.com/jmoiron/[email protected]/sqlx.go:370 +0x70
github.com/PoC-Consortium/Nogrod/pkg/modelx.(*Modelx).validateTransactions(0xc0002b2090)
/root/nogrod-1.4.0/pkg/modelx/modelx.go:942 +0x472
github.com/PoC-Consortium/Nogrod/pkg/modelx.(*Modelx).Payout(0xc0002b2090)
/root/nogrod-1.4.0/pkg/modelx/modelx.go:1006 +0x39
github.com/PoC-Consortium/Nogrod/pkg/pool.(*Pool).jobs(0xc0002f5920)
/root/nogrod-1.4.0/pkg/pool/pool.go:170 +0x195
created by github.com/PoC-Consortium/Nogrod/pkg/pool.(*Pool).Run
/root/nogrod-1.4.0/pkg/pool/pool.go:410 +0x3f
Currently the pool tx fee in the config charges all miners the same amount for example 0.1 fee, but only cost 0.1 for one multi-out transaction making it so the pool owner keeps the rest of the collected tx fee for them selves. So, if pool has 10 active miners total and charges all of them 0.1 tx fee, then the pool keeps 0.9 burst and only pays 0.1 multi-out tx fee. Not a fair setup for the miners! Recommend dividing the set tx fee in the config by the amount of total active miners and charging that amount to each miner and making it fair. For example if the pool config tx fee is set to 1 burst and there are 10 miners, then each miner would be effectively charged 0.1 burst each. Thoughts? Maybe have a current active miner fee section in the config web page that is variable based on number of current miners.
Please add http://brs.kuangjiwan.com/ to the license.
Thanks!
Noticed my Pool fee account shows negative if it is also one of the miner accounts in "All Miner" tab right after each payout. If I restart the pool software it turns into positive value at times.
make build
make[1]: Entering directory '/home/burst/pool/testpool/goburstpool'
git submodule update --init --recursive
Submodule 'src/goburst' (https://github.com/spebern/goburst) registered for path 'src/goburst'
Cloning into '/home/burst/pool/testpool/goburstpool/src/goburst'...
Submodule path 'src/goburst': checked out '4a95c84fdab00f87442fcb37793de19c3269518e'
package github.com/golang-migrate/migrate/v3/database: cannot find package "github.com/golang-migrate/migrate/v3/database" in any of:
/usr/lib/go-1.10/src/github.com/golang-migrate/migrate/v3/database (from $GOROOT)
/home/burst/pool/testpool/goburstpool/vendor/src/github.com/golang-migrate/migrate/v3/database (from $GOPATH)
/home/burst/pool/testpool/goburstpool/src/github.com/golang-migrate/migrate/v3/database
package github.com/golang-migrate/migrate/v3/source: cannot find package "github.com/golang-migrate/migrate/v3/source" in any of:
/usr/lib/go-1.10/src/github.com/golang-migrate/migrate/v3/source (from $GOROOT)
/home/burst/pool/testpool/goburstpool/vendor/src/github.com/golang-migrate/migrate/v3/source (from $GOPATH)
/home/burst/pool/testpool/goburstpool/src/github.com/golang-migrate/migrate/v3/source
Makefile:41: recipe for target 'deps' failed
make[1]: *** [deps] Error 1
make[1]: Leaving directory '/home/burst/pool/testpool/goburstpool'
Makefile:16: recipe for target 'start' failed
make: *** [start] Error 2
when making, it shows:
make[1]: Leaving directory '/home/fullintest/burstTool/git/goburstpool'
./goburstpool
{"level":"info","ts":1530170824.0251307,"caller":"config/config.go:195","msg":"Using default 5s for Cfg.WalletTimeout"}
{"level":"fatal","ts":1530170824.0268152,"caller":"modelx/modelx.go:155","msg":"failed to connect to sql server","error":"Error 1045: Access denied for user 'burstpool'@'localhost' (using password: YES)","stacktrace":"modelx.initializeDatabase\n\t/home/fullintest/burstTool/git/goburstpool/src/modelx/modelx.go:155\nmodelx.NewModelX\n\t/home/fullintest/burstTool/git/goburstpool/src/modelx/modelx.go:113\nmain.main\n\t/home/fullintest/burstTool/git/goburstpool/main.go:19\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:198"}
Makefile:16: recipe for target 'start' faile
how can I fix this issue?
I had already installed mariadb,:
$ mysqladmin --version
mysqladmin Ver 9.1 Distrib 10.3.7-MariaDB, for debian-linux-gnu on x86_64
and go:
$ go version
go version go1.10.3 linux/amd64
When clicking on "Software Package" navigation button next to the "Burst Wiki" button it redirects you to https://package.cryptoguru.org/ which is a broken link with 404 error. Recommend pointing it to creepMiner github release page.
Please add https://pool.burst.fun to the license.
Thanks!
@spebern unfortunately I couldn't get any help from discord channel. So here I'm again.
I got pool running and I can access pool with local host such as 127.0.0.1:8080
, however when I access the same pool with external IP it doesn't work. I checked port 8080 is accessible from outside therefore open. Any clue about it?
Where is the exact location of config file, where it should be? And what is the extension of config file.
I've tried to put in /goburstpool/src/config and file name config.yaml
/goburstpool/src/config/config.yaml
But still when I make I get this error
make[1]: Leaving directory '/root/goburstpool'
./goburstpool
{"level":"fatal","ts":1542429773.4818594,"caller":"config/config.go:77","msg":"unpacking config failed","error":"yaml: unmarshal errors:\n line 60: cannot unmarshal !!str3A1ryV5...
into uint64","stacktrace":"config.LoadConfig\n\t/root/goburstpool/src/config/config.go:77\nmain.main\n\t/root/goburstpool/main.go:14\nruntime.main\n\t/root/.go/src/runtime/proc.go:198"}
Makefile:16: recipe for target 'start' failed
make: *** [start] Error 1
2019-07-25T15:33:03.588+0800 ERROR modelx/modelx.go:454 switching new block {"error": "Generation signature's length differs from 64"}
github.com/PoC-Consortium/Nogrod/pkg/modelx.(*Modelx).MaybeSwitchOrNewBlock
/home/ubuntu/Nogrod/pkg/modelx/modelx.go:454
github.com/PoC-Consortium/Nogrod/pkg/modelx.(*Modelx).UpdateOrCreateNonceSubmission
/home/ubuntu/Nogrod/pkg/modelx/modelx.go:751
github.com/PoC-Consortium/Nogrod/pkg/pool.(*Pool).processSubmitNonceRequest
/home/ubuntu/Nogrod/pkg/pool/pool.go:268
github.com/PoC-Consortium/Nogrod/pkg/pool.(*Pool).serve.func1
/home/ubuntu/Nogrod/pkg/pool/pool.go:335
net/http.HandlerFunc.ServeHTTP
/usr/local/go/src/net/http/server.go:1995
github.com/throttled/throttled.(*HTTPRateLimiter).RateLimit.func1
/home/ubuntu/go/pkg/mod/github.com/throttled/[email protected]+incompatible/http.go:73
net/http.HandlerFunc.ServeHTTP
/usr/local/go/src/net/http/server.go:1995
net/http.(*ServeMux).ServeHTTP
/usr/local/go/src/net/http/server.go:2375
net/http.serverHandler.ServeHTTP
/usr/local/go/src/net/http/server.go:2774
net/http.(*conn).serve
Not sure if this is pool software issue or wallet 2.2.1 issue, but I have noticed that the "Elapsed Time" is lagging about 18 seconds behind any current POCC pool when compared. Recreated on latest commit. Not sure about previous commits.
Finally I didn't have time to do anything 'proper' but it must be pretty easy to 'cleanup'
Here's a draft supposedly working :
web/templates/index.tmpl
('switch').click(function(e){
if ($('link[href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"]').length == 1) {
$('link[href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"]').attr('href', 'https://stackpath.bootstrapcdn.com/bootswatch/3.3.5/darkly/bootstrap.min.css');
}
else if ($('link[href="https://stackpath.bootstrapcdn.com/bootswatch/3.3.5/darkly/bootstrap.min.css"]').length == 1) {
$('link[href="https://stackpath.bootstrapcdn.com/bootswatch/3.3.5/darkly/bootstrap.min.css"]').attr('href', '//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css');
}
});
web/templates/header.tmpl
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li>
<a target="_blank" href="/info">
<i class="fa fa-info"></i> Info
</a>
</li>
<li>
<a target="_blank" href="https://explore.burst.cryptoguru.org/">
<i class="fa fa-bar-chart-o"></i> Explorer
</a>
</li>
<li>
<a target="_blank" href="https://github.com/PoC-Consortium">
<i class="fa fa-briefcase"></i> Software Packages
</a>
</li>
<li>
<a target="_blank" href="https://burstwiki.org/">
<i class="fa fa-wikipedia-w"></i> Burst Wiki
</a>
</li>
<li>
<a id="switch">
<i class="fa fa-moon-o"></i> Theme Switch
</a>
</li>
</ul>
</div>
/go/src/github.com/Nogrod-1.4.0$ make
cd pkg/burstmath && make
make[1]: Entering directory '/home/andrew/go/src/github.com/Nogrod-1.4.0/pkg/burstmath'
cd libs;
cc -Wall -m64 -O3 -mtune=native -fPIC -c -o shabal64.o shabal64.s;
cc -Wall -m64 -O3 -mtune=native -fPIC -c -o mshabal_sse4.o mshabal_sse4.c;
cc -Wall -m64 -O3 -mtune=native -fPIC -mavx2 -c -o mshabal256_avx2.o mshabal256_avx2.c;
cc -Wall -m64 -O3 -mtune=native -fPIC -shared -o libburstmath.a burstmath.c shabal64.o mshabal_sse4.o mshabal256_avx2.o -lpthread -std=gnu99;
burstmath.c: In function ‘calculate_deadline’:
burstmath.c:90:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
req->deadline = *(uint64_t *)finals2 / req->base_target;
^
burstmath.c: In function ‘calculate_deadlines_sse4’:
burstmath.c:144:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reqs[i]->deadline = *(uint64_t *)finals2[i] / reqs[i]->base_target;
^
burstmath.c: In function ‘calculate_deadlines_avx2’:
burstmath.c:210:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reqs[i]->deadline = *(uint64_t *)finals2[i] / reqs[i]->base_target;;
^
make[1]: Leaving directory '/home/andrew/go/src/github.com/Nogrod-1.4.0/pkg/burstmath'
go build -o Nogrod
github.com/PoC-Consortium/Nogrod/pkg/burstmath
/usr/bin/ld: cannot find -lburstmath
collect2: error: ld returned 1 exit status
Makefile:19: recipe for target 'build' failed
make: *** [build] Error 2
I receive this error after running make -
"error":"Error 1045: Access denied for user 'burstpool'@'localhost' (using password: YES)"
What is the name of the config file?? I have tried config.yaml in the root directory.
When clicking on the "Best Miner" wallet link the software redirects to a none existent wallet link that looks similar but with a bunch of zeros at the end.
Example link: http://explore.burst.cryptoguru.org/address/7909028307161998000
Gents,
Would it be possible to add a Total Pool Capacity in TeraBytes (TB) on the dashboard that would add up all the storage capacities of "All Miners" Tab? I know many of us miners catch ourselves trying to calculate the total capacity in our heads. Would be a great feature to see it in the Dashboard section somewhere like "Current Round Shares" Graphic.
V/r,
khomitchr
in file: pkg/modelx/modelx.go
if currentBlock.Height != uint64(0) && height < currentBlock.Height-uint64(Cfg.NAVG) { return errors.New("bock too old") }
when uint64(Cfg.NAVG) is bigger than currentBlock.Height, the result of subtraction will be a very large uint64 number. cause this function always return error.
when making pool sw of pool, encounter this error:
make build
make[1]: Entering directory '/home/fullintest/burstTool/project'
git submodule update --init --recursive
package gopkg.in/yaml.v2: unrecognized import path "gopkg.in/yaml.v2" (https fetch: Get https://gopkg.in/yaml.v2?go-get=1: net/http: TLS handshake timeout)
Makefile:37: recipe for target 'deps' failed
make[1]: *** [deps] Error 1
make[1]: Leaving directory '/home/fullintest/burstTool/project'
Makefile:16: recipe for target 'start' failed
make: *** [start] Error 2
how can I resolve it?
// numeric id of pool
// all miners should set their reward recipient to
// this numeric id
poolPublicId: 10282355196851764065
Hi, it seems like my gcc can not build shabal64.s to shabal64.o
➜ goburstpool git:(master) ✗ make
cd pkg/burstmath && /Library/Developer/CommandLineTools/usr/bin/make
cd libs;
cc -c -o shabal64.o shabal64.s;
cc -c -o mshabal_sse4.o mshabal_sse4.c;
cc -mavx2 -c -o mshabal256_avx2.o mshabal256_avx2.c;
cc -shared -o libburstmath.a burstmath.c shabal64.o mshabal_sse4.o mshabal256_avx2.o -lpthread -std=gnu99;
shabal64.s:101:2: error: unknown directive
.type shabal_inner, @function
^
shabal64.s:1312:2: error: unknown directive
.size shabal_inner, .-shabal_inner
^
shabal64.s:1322:2: error: unknown directive
.type shabal_init, @function
^
shabal64.s:1358:2: error: unknown directive
.size shabal_init, .-shabal_init
^
shabal64.s:1363:2: error: unknown directive
.type iv, @object
^
shabal64.s:1589:2: error: unknown directive
.size iv, .-iv
^
shabal64.s:1595:2: error: unknown directive
.type reduced_memcpy, @function
^
shabal64.s:1604:2: error: unknown directive
.size reduced_memcpy, .-reduced_memcpy
^
shabal64.s:1633:2: error: unknown directive
.type align_structure_enter, @function
^
shabal64.s:1653:2: error: unknown directive
.size align_structure_enter, .-align_structure_enter
^
shabal64.s:1671:2: error: unknown directive
.type align_structure_leave, @function
^
shabal64.s:1686:2: error: unknown directive
.size align_structure_leave, .-align_structure_leave
^
shabal64.s:1698:2: error: unknown directive
.type shabal, @function
^
shabal64.s:1824:2: error: unknown directive
.size shabal, .-shabal
^
shabal64.s:1838:2: error: unknown directive
.type shabal_close, @function
^
shabal64.s:1943:2: error: unknown directive
.size shabal_close, .-shabal_close
^
clang: error: no such file or directory: 'shabal64.o'
make[1]: *** [libs] Error 1
make: *** [libs] Error 2
➜ goburstpool git:(master) ✗ go version
go version go1.11.2 darwin/amd64
➜ goburstpool git:(master) ✗ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
macOS High Sierra
When i run the burstpool as described here i get some warnings, and every deadline i submit is calculated different then the miner does. What could be the cause of this, and what to do to get rid of the warnings?
make build
make[1]: Entering directory '/home/richard/goburstpool'
git submodule update --init --recursive
cd src/goburst/burstmath/libs;
gcc -fPIC -Wall -m64 -O3 -mtune=native -c -o shabal64.o shabal64.s;
gcc -fPIC -Wall -m64 -O3 -mtune=native -c -o mshabal_sse4.o mshabal_sse4.c;
gcc -fPIC -Wall -m64 -O3 -mtune=native -mavx2 -c -o mshabal256_avx2.o mshabal256_avx2.c;
gcc -fPIC -Wall -m64 -O3 -mtune=native -shared -o libburstmath.a burstmath.c shabal64.o mshabal_sse4.o mshabal256_avx2.o -lpthread -std=gnu99;
burstmath.c: In function 'calculate_deadline':
burstmath.c:96:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
req->deadline = *(uint64_t *)finals2 / req->base_target;
^
burstmath.c: In function 'calculate_deadlines_sse4':
burstmath.c:154:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reqs[i]->deadline = *(uint64_t *)finals2[i] / reqs[i]->base_target;
^
burstmath.c: In function 'calculate_deadlines_avx2':
burstmath.c:224:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reqs[i]->deadline = *(uint64_t *)finals2[i] / reqs[i]->base_target;;
^
make[1]: Leaving directory '/home/richard/goburstpool'
./goburstpool
{"level":"info","ts":1528141884.7235026,"caller":"config/config.go:194","msg":"Using default 5s for Cfg.WalletTimeout"}
{"level":"info","ts":1528141905.776647,"caller":"pool/pool.go:175","msg":"got new Block with height","height":497839}
{"level":"info","ts":1522697581.0140765,"caller":"pool/pool.go:83","msg":"using sse4"}
{"level":"info","ts":1522697581.0155797,"caller":"pool/pool.go:267","msg":"got new Block with height","height":475328}
{"level":"info","ts":1522697581.9128437,"caller":"pool/pool.go:446","msg":"incoming request","requestId":"cd972cce-09ef-45f5-a198-a651caea6033","ip":"192.168.0.20","uri":"/burst?requestType=getMiningInfo","user-agent":""}
SIGILL: illegal instruction
PC=0x889be7 m=4 sigcode=2
goroutine 0 [idle]:
runtime: unknown pc 0x889be7
stack: frame={sp:0x7f61a1102d38, fp:0x0} stack=[0x7f61a0a042f0,0x7f61a1203ef0)
00007f61a1102c38: 0000000000000000 0000000000000000
00007f61a1102c48: 0000000000000000 0000000000000000
00007f61a1102c58: 0000000000000000 0000000000000000
00007f61a1102c68: 0000000000000000 0000000000000000
00007f61a1102c78: 0000000000000000 0000000000000000
...................................
runtime: unknown pc 0x889be7
stack: frame={sp:0x7f61a1102d38, fp:0x0} stack=[0x7f61a0a042f0,0x7f61a1203ef0)
00007f61a1102c38: 0000000000000000 0000000000000000
00007f61a1102c48: 0000000000000000 0000000000000000
00007f61a1102c58: 0000000000000000 0000000000000000
00007f61a1102c68: 0000000000000000 0000000000000000
..................................................................
goroutine 164 [syscall]:
runtime.cgocall(0x885690, 0xc420250de8, 0x9f1458)
/usr/local/go/src/runtime/cgocall.go:128 +0x64 fp=0xc420250d60 sp=0xc420250d28 pc=0x403334
util._Cfunc_calculate_deadlines_sse4(0x182, 0xbd67, 0xc4202980c0, 0x0, 0xc9ad78a6bbd9f700, 0xc9ad78a6bbd9f700, 0x0, 0x0, 0x1a17a33, 0x5af318c9f81f, ...)
_cgo_gotypes.go:95 +0x4b fp=0xc420250de8 sp=0xc420250d60 pc=0x72e2ab
util.CalculateDeadlinesSSE4(0x182, 0xbd67, 0xc4202980c0, 0x20, 0x40, 0xc420456100, 0xc9ad78a6bbd9f700, 0xc9ad78a6bbd9f700, 0x0, 0x0, ...)
/ssd/official/gopool/goburstpool/src/util/util.go:107 +0x17d fp=0xc420250e98 sp=0xc420250de8 pc=0x72ef4d
pool.(*Pool).processReqsSSE4(0xc42038c090, 0xc9ad78a6bbd9f700, 0x1a17a33, 0xc42002a540, 0xc9ad78a6bbd9f700, 0x5af318c9f81f, 0xc42002a690, 0x0, 0x0, 0x0, ...)
/ssd/official/gopool/goburstpool/src/pool/pool.go:139 +0x142 fp=0xc420250f70 sp=0xc420250e98 pc=0x780a92
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc420250f78 sp=0xc420250f70 pc=0x4573d1
created by pool.(*Pool).collectDeadlineReqsSSE4
/ssd/official/gopool/goburstpool/src/pool/pool.go:131 +0x2a1
goroutine 1 [select (no cases)]:
main.main()
/ssd/official/gopool/goburstpool/main.go:31 +0x10e
and this continue.
Please check and offer a solution.
Once a day on a pool with latest commit goburstpool software a previous deadline submitted by a miner is displayed on the next block and makes it look like they won the block. See image here: https://puu.sh/B7TW1/1a28179c8f.png
Having trouble making latest build, I am still on 1.2.0 (pre Nogrod)
cd pkg/burstmath && make
make[1]: Entering directory '/srv/tmp/Nogrod-1.4.4/pkg/burstmath'
cd libs;
cc -Wall -m64 -O3 -mtune=native -fPIC -c -o shabal64.o shabal64.s;
cc -Wall -m64 -O3 -mtune=native -fPIC -c -o mshabal_sse4.o mshabal_sse4.c;
cc -Wall -m64 -O3 -mtune=native -fPIC -mavx2 -c -o mshabal256_avx2.o mshabal256_avx2.c;
cc -Wall -m64 -O3 -mtune=native -fPIC -shared -o libburstmath.a burstmath.c shabal64.o mshabal_sse4.o mshabal256_avx2.o -lpthread -std=gnu99;
burstmath.c: In function ‘calculate_deadline’:
burstmath.c:90:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
req->deadline = *(uint64_t *)finals2 / req->base_target;
^~~
burstmath.c: In function ‘calculate_deadlines_sse4’:
burstmath.c:144:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reqs[i]->deadline = *(uint64_t *)finals2[i] / reqs[i]->base_target;
^~~~
burstmath.c: In function ‘calculate_deadlines_avx2’:
burstmath.c:210:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reqs[i]->deadline = *(uint64_t *)finals2[i] / reqs[i]->base_target;;
^~~~
make[1]: Leaving directory '/srv/tmp/Nogrod-1.4.4/pkg/burstmath'
go build -o Nogrod
main.go:6:2: cannot find package "github.com/PoC-Consortium/Nogrod/pkg/config" in any of:
/usr/local/go/src/github.com/PoC-Consortium/Nogrod/pkg/config (from $GOROOT)
/root/go/src/github.com/PoC-Consortium/Nogrod/pkg/config (from $GOPATH)
main.go:7:2: cannot find package "github.com/PoC-Consortium/Nogrod/pkg/modelx" in any of:
/usr/local/go/src/github.com/PoC-Consortium/Nogrod/pkg/modelx (from $GOROOT)
/root/go/src/github.com/PoC-Consortium/Nogrod/pkg/modelx (from $GOPATH)
main.go:8:2: cannot find package "github.com/PoC-Consortium/Nogrod/pkg/pool" in any of:
/usr/local/go/src/github.com/PoC-Consortium/Nogrod/pkg/pool (from $GOROOT)
/root/go/src/github.com/PoC-Consortium/Nogrod/pkg/pool (from $GOPATH)
main.go:9:2: cannot find package "github.com/PoC-Consortium/Nogrod/pkg/wallethandler" in any of:
/usr/local/go/src/github.com/PoC-Consortium/Nogrod/pkg/wallethandler (from $GOROOT)
/root/go/src/github.com/PoC-Consortium/Nogrod/pkg/wallethandler (from $GOPATH)
main.go:10:2: cannot find package "github.com/PoC-Consortium/Nogrod/pkg/webserver" in any of:
/usr/local/go/src/github.com/PoC-Consortium/Nogrod/pkg/webserver (from $GOROOT)
/root/go/src/github.com/PoC-Consortium/Nogrod/pkg/webserver (from $GOPATH)
Makefile:19: recipe for target 'build' failed
make: *** [build] Error 1
As stated above. It would be great to have the BURST ID on the subscriptions page under address to link to the explorer for that ID. This would especially make things easier while tracking reverse multi-outs for your payouts. Thanks!
what meaning of nMin?
Please add http://pool.dawgtech.net to the license.
Thanks!
My pool was crashing due to below logs and errors. I ended blocking 183.240.196.0/24 network and crashing stopped.
{"level":"info","ts":1530161899.1485713,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"ac6a88db-4330-42b1-ba60-adf7f07df844","ip":"183.240.196.149","uri":"/burst?requestType=getMiningInfo","user-agent":""}
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 160ms
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 5ms
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 5ms
{"level":"warn","ts":1530161899.389737,"caller":"pool/pool.go:191","msg":"Miner submitted on invalid height","requestId":"7414b1f4-86d8-46e3-b20b-30852a127f7d","got":506188,"expected":506189}
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 5ms
{"level":"warn","ts":1530161899.3954515,"caller":"pool/pool.go:191","msg":"Miner submitted on invalid height","requestId":"99e0ccec-5739-4045-a34f-88d54264cfa3","got":506188,"expected":506189}
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 5ms
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 5ms
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 10ms
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 20ms
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 40ms
{"level":"info","ts":1530161899.4665709,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"29495a67-16c6-4bd1-abd4-ca046de9f4f9","accountID":7909028307161998093,"nonce":262724603}
{"level":"info","ts":1530161899.4666092,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"29495a67-16c6-4bd1-abd4-ca046de9f4f9"}
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 80ms
{"level":"info","ts":1530161899.5110872,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"c5a1c192-fdff-45a3-b84c-dc51d392071e","accountID":6336676392124779714,"nonce":3170787038231368992}
{"level":"info","ts":1530161899.5111887,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"c5a1c192-fdff-45a3-b84c-dc51d392071e"}
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 160ms
{"level":"info","ts":1530161899.5765386,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"7de098ee-60fd-450f-b843-b0339da082b4","accountID":6336676392124779714,"nonce":3644146842904536106}
{"level":"info","ts":1530161899.5765886,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"7de098ee-60fd-450f-b843-b0339da082b4"}
2018/06/27 18:58:19 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 320ms
{"level":"info","ts":1530161899.9060771,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"3f82cf27-b1fc-438b-8677-dfce871e543f","ip":"183.240.196.144","uri":"/burst?requestType=getMiningInfo","user-agent":""}
2018/06/27 18:58:20 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 640ms
{"level":"info","ts":1530161900.0484722,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"7f02e768-c03c-47e0-8980-74fdbb27a385","ip":"183.240.196.147","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161900.2119117,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"7b1b21f5-60a2-4d1f-9641-6edb9ea56d00","accountID":6336676392124779714,"nonce":8132983812972275705}
{"level":"info","ts":1530161900.2119567,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"7b1b21f5-60a2-4d1f-9641-6edb9ea56d00"}
{"level":"info","ts":1530161900.2439551,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"e59c29f3-e29b-43ea-98fb-a04873d571df","accountID":6336676392124779714,"nonce":13020253998469113399}
{"level":"info","ts":1530161900.2440057,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"e59c29f3-e29b-43ea-98fb-a04873d571df"}
{"level":"info","ts":1530161900.2490346,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"8afb15c6-55ac-476d-bdd7-e9ad02f0a380","ip":"183.240.196.148","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161900.401606,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"2236fb0a-e980-4274-add0-5472317555bb","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161900.4829342,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"130245ba-3e3f-4b21-92d5-512b7662e868","accountID":6336676392124779714,"nonce":3644146842922820628}
{"level":"info","ts":1530161900.482976,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"130245ba-3e3f-4b21-92d5-512b7662e868"}
{"level":"info","ts":1530161900.569727,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"b1f71f94-e89d-462a-b295-e7e00f773940","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161900.5735183,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"d0df95b8-80ee-44f8-8aa7-7aa9808082eb","ip":"183.240.196.144","uri":"/burst?requestType=getMiningInfo","user-agent":""}
2018/06/27 18:58:20 http: Accept error: accept tcp [::]:8124: accept4: too many open files; retrying in 1s
{"level":"info","ts":1530161900.7024949,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"19d6bcee-87ca-44eb-87ad-78ea63c31784","ip":"","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161900.9001665,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"7c00e2de-7fcb-4edc-95cd-6da74c04fb80","ip":"183.240.196.144","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161901.0500207,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"4252cc09-5566-44fc-9efa-e19f3f728f25","ip":"183.240.196.151","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161901.0588717,"caller":"pool/pool.go:218","msg":"processing formal valid request","requestId":"97a02421-8d3e-49fe-a22d-14b79ee8efb5","accountID":6336676392124779714,"nonce":8555247405341977372}
{"level":"info","ts":1530161901.0589318,"caller":"pool/pool.go:229","msg":"valid reward recipient","requestId":"97a02421-8d3e-49fe-a22d-14b79ee8efb5"}
{"level":"info","ts":1530161901.227112,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"49776742-511a-4e70-be8b-9342c28065b6","ip":"183.240.196.60","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161901.2446516,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"10995847-8b76-4fe7-a0ec-043037d322b1","ip":"183.240.196.52","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161901.34792,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"de1cc5d9-773b-4dcf-8c6a-c06ae5c9f4a2","ip":"183.240.196.52","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1530161901.634269,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"97a02421-8d3e-49fe-a22d-14b79ee8efb5","deadline":12642091}
{"level":"info","ts":1530161901.634329,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"e59c29f3-e29b-43ea-98fb-a04873d571df","deadline":5968675}
{"level":"info","ts":1530161901.6343536,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"7b1b21f5-60a2-4d1f-9641-6edb9ea56d00","deadline":9972035}
{"level":"info","ts":1530161901.634399,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"130245ba-3e3f-4b21-92d5-512b7662e868","deadline":18321496}
{"level":"info","ts":1530161901.6342852,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"7de098ee-60fd-450f-b843-b0339da082b4","deadline":21544729}
{"level":"info","ts":1530161901.6343055,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"29495a67-16c6-4bd1-abd4-ca046de9f4f9","deadline":23382541}
{"level":"info","ts":1530161901.6343179,"caller":"pool/pool.go:253","msg":"valid deadline","requestId":"c5a1c192-fdff-45a3-b84c-dc51d392071e","deadline":25873730}
{"level":"info","ts":1530161901.639479,"caller":"pool/pool.go:101","msg":"new best deadline","deadline":12642091}
panic: dial tcp 127.0.0.1:3306: socket: too many open files
goroutine 71 [running]:
github.com/jmoiron/sqlx.MustExec(0xb123a0, 0xc4202a2060, 0xabe985, 0xb6, 0xc4215bae20, 0x2, 0x2, 0x0, 0xc420349c38)
/home/burst/pool/goburstpool/vendor/src/github.com/jmoiron/sqlx/sqlx.go:720 +0xba
github.com/jmoiron/sqlx.(*DB).MustExec(0xc4202a2060, 0xabe985, 0xb6, 0xc4215bae20, 0x2, 0x2, 0xc42143c000, 0xc421b17a40)
/home/burst/pool/goburstpool/vendor/src/github.com/jmoiron/sqlx/sqlx.go:370 +0x70
modelx.(*Modelx).UpdateBestSubmission(0xc420254c60, 0x57f0659b01338cc2, 0x7b94d)
/home/burst/pool/goburstpool/src/modelx/modelx.go:706 +0x10d
pool.(*Pool).forge(0xc42026bef0, 0x7b943, 0x18aed, 0xea5, 0xc4202b4100, 0x40, 0xc4202b4140, 0x20, 0x40, 0x0, ...)
/home/burst/pool/goburstpool/src/pool/pool.go:103 +0x528
created by pool.NewPool
/home/burst/pool/goburstpool/src/pool/pool.go:57 +0x2a5
I set txFee: 000750000 in config.yalm but it shows 0.00249856 on the website.
It would be nice to have some configuration details available via the API:
This would help making a "live" comparison of all Pools.
And I'm planing to do an uptime monitoring for Pools which uses the provided values aswell.
For example:
Pool A was online for 200 days straight and has a fee of 1% it would be as efficient as the pool with 198 Days online time and a fee of 0%.
-> Having the Share and Fee values is necessary; and why one should want to store it additionally if the API can provide live values
{"level":"info","ts":1531894521.497703,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"03393ed9-c97d-450d-948b-9ca99110b5e9","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894521.701579,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"7d6da57f-cb79-4c2b-844e-22eb83985315","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894521.773634,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"2e65c153-f736-496f-be9d-04ecc39bdb9a","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894521.857405,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"51d66c2f-0e84-4750-af83-f7f742ca50a9","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894522.1446123,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"c07974b3-e060-41fd-ba3c-b4e074869aae","ip":"183.240.196.150","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894522.967498,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"4873a3de-ec37-4d79-9716-b66f2f316fe0","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894523.01998,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"c11e375f-d780-495e-b449-f5debfd56711","ip":"183.240.196.148","uri":"/burst?requestType=getMiningInfo","user-agent":""}
{"level":"info","ts":1531894523.2016115,"caller":"pool/pool.go:278","msg":"rate limit exceeded","requestId":"bacc26cb-35d5-4487-9edb-f584b79cd3a4","ip":"183.240.196.53","uri":"/burst?requestType=getMiningInfo","user-agent":""}
I have my limit set to allowRequestsPerSecond: 3
and ulimit -Sn 1048576
once I blocked the IPs at the firewall pool performance increased dramatically.
I'm not sure what this client is trying to do.
Just wondering how do we generate poolPublicId or it could be any random set of numerics?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.