Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
bbd12035
Unverified
Commit
bbd12035
authored
Jan 24, 2019
by
Anton Evangelatov
Committed by
GitHub
Jan 24, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swarm: bootnode-mode, new bootnodes and no p2p package discovery (#18498)
parent
ecb78129
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
107 additions
and
90 deletions
+107
-90
bootnodes.go
cmd/swarm/bootnodes.go
+4
-57
config.go
cmd/swarm/config.go
+17
-6
flags.go
cmd/swarm/flags.go
+4
-0
main.go
cmd/swarm/main.go
+22
-3
run_test.go
cmd/swarm/run_test.go
+0
-2
upload_and_sync.go
cmd/swarm/swarm-smoke/upload_and_sync.go
+4
-0
upload_speed.go
cmd/swarm/swarm-smoke/upload_speed.go
+2
-0
protocol.go
p2p/protocols/protocol.go
+14
-0
config.go
swarm/api/config.go
+1
-0
kademlia.go
swarm/network/kademlia.go
+1
-1
protocol.go
swarm/network/protocol.go
+9
-1
delivery.go
swarm/network/stream/delivery.go
+8
-1
delivery_test.go
swarm/network/stream/delivery_test.go
+1
-1
stream.go
swarm/network/stream/stream.go
+5
-0
pyramid.go
swarm/storage/pyramid.go
+0
-7
swarm.go
swarm/swarm.go
+15
-11
No files found.
cmd/swarm/bootnodes.go
View file @
bbd12035
...
@@ -17,61 +17,8 @@
...
@@ -17,61 +17,8 @@
package
main
package
main
var
SwarmBootnodes
=
[]
string
{
var
SwarmBootnodes
=
[]
string
{
// Foundation Swarm Gateway Cluster
// EF Swarm Bootnode - AWS - eu-central-1
"enode://e5c6f9215c919a5450a7b8c14c22535607b69f2c8e1e7f6f430cb25d7a2c27cd1df4c4f18ad7c1d7e5162e271ffcd3f20b1a1467fb6e790e7d727f3b2193de97@52.232.7.187:30399"
,
"enode://4c113504601930bf2000c29bcd98d1716b6167749f58bad703bae338332fe93cc9d9204f08afb44100dc7bea479205f5d162df579f9a8f76f8b402d339709023@3.122.203.99:30301"
,
"enode://9b2fe07e69ccc7db5fef15793dab7d7d2e697ed92132d6e9548218e68a34613a8671ad03a6658d862b468ed693cae8a0f8f8d37274e4a657ffb59ca84676e45b@52.232.7.187:30400"
,
// EF Swarm Bootnode - AWS - us-west-2
"enode://76c1059162c93ef9df0f01097c824d17c492634df211ef4c806935b349082233b63b90c23970254b3b7138d630400f7cf9b71e80355a446a8b733296cb04169a@52.232.7.187:30401"
,
"enode://89f2ede3371bff1ad9f2088f2012984e280287a4e2b68007c2a6ad994909c51886b4a8e9e2ecc97f9910aca538398e0a5804b0ee80a187fde1ba4f32626322ba@52.35.212.179:30301"
,
"enode://ce46bbe2a8263145d65252d52da06e000ad350ed09c876a71ea9544efa42f63c1e1b6cc56307373aaad8f9dd069c90d0ed2dd1530106200e16f4ca681dd8ae2d@52.232.7.187:30402"
,
"enode://f431e0d6008a6c35c6e670373d828390c8323e53da8158e7bfc43cf07e632cc9e472188be8df01decadea2d4a068f1428caba769b632554a8fb0607bc296988f@52.232.7.187:30403"
,
"enode://174720abfff83d7392f121108ae50ea54e04889afe020df883655c0f6cb95414db945a0228d8982fe000d86fc9f4b7669161adc89cd7cd56f78f01489ab2b99b@52.232.7.187:30404"
,
"enode://2ae89be4be61a689b6f9ecee4360a59e185e010ab750f14b63b4ae43d4180e872e18e3437d4386ce44875dc7cc6eb761acba06412fe3178f3dac1dab3b65703e@52.232.7.187:30405"
,
"enode://24abebe1c0e6d75d6052ce3219a87be8573fd6397b4cb51f0773b83abba9b3d872bfb273cdc07389715b87adfac02f5235f5241442c5089802cbd8d42e310fce@52.232.7.187:30406"
,
"enode://d08dfa46bfbbdbcaafbb6e34abee4786610f6c91e0b76d7881f0334ac10dda41d8c1f2b6eedffb4493293c335c0ad46776443b2208d1fbbb9e1a90b25ee4eef2@52.232.7.187:30407"
,
"enode://8d95eb0f837d27581a43668ed3b8783d69dc4e84aa3edd7a0897e026155c8f59c8702fdc0375ee7bac15757c9c78e1315d9b73e4ce59c936db52ea4ae2f501c7@52.232.7.187:30408"
,
"enode://a5967cc804aebd422baaaba9f06f27c9e695ccab335b61088130f8cbe64e3cdf78793868c7051dfc06eecfe844fad54bc7f6dfaed9db3c7ecef279cb829c25fb@52.232.7.187:30409"
,
"enode://5f00134d81a8f2ebcc46f8766f627f492893eda48138f811b7de2168308171968f01710bca6da05764e74f14bae41652f554e6321f1aed85fa3461e89d075dbf@52.232.7.187:30410"
,
"enode://b2142b79b01a5aa66a5e23cc35e78219a8e97bc2412a6698cee24ae02e87078b725d71730711bd62e25ff1aa8658c6633778af8ac14c63814a337c3dd0ebda9f@52.232.7.187:30411"
,
"enode://1ffa7651094867d6486ce3ef46d27a052c2cb968b618346c6df7040322c7efc3337547ba85d4cbba32e8b31c42c867202554735c06d4c664b9afada2ed0c4b3c@52.232.7.187:30412"
,
"enode://129e0c3d5f5df12273754f6f703d2424409fa4baa599e0b758c55600169313887855e75b082028d2302ec034b303898cd697cc7ae8256ba924ce927510da2c8d@52.232.7.187:30413"
,
"enode://419e2dc0d2f5b022cf16b0e28842658284909fa027a0fbbb5e2b755e7f846ea02a8f0b66a7534981edf6a7bcf8a14855344c6668e2cd4476ccd35a11537c9144@52.232.7.187:30414"
,
"enode://23d55ad900583231b91f2f62e3f72eb498b342afd58b682be3af052eed62b5651094471065981de33d8786f075f05e3cca499503b0ac8ae84b2a06e99f5b0723@52.232.7.187:30415"
,
"enode://bc56e4158c00e9f616d7ea533def20a89bef959df4e62a768ff238ff4e1e9223f57ecff969941c20921bad98749baae311c0fbebce53bf7bbb9d3dc903640990@52.232.7.187:30416"
,
"enode://433ce15199c409875e7e72fffd69fdafe746f17b20f0d5555281722a65fde6c80328fab600d37d8624509adc072c445ce0dad4a1c01cff6acf3132c11d429d4d@52.232.7.187:30417"
,
"enode://632ee95b8f0eac51ef89ceb29313fef3a60050181d66a6b125583b1a225a7694b252edc016efb58aa3b251da756cb73280842a022c658ed405223b2f58626343@52.232.7.187:30418"
,
"enode://4a0f9bcff7a4b9ee453fb298d0fb222592efe121512e30cd72fef631beb8c6a15153a1456eb073ee18551c0e003c569651a101892dc4124e90b933733a498bb5@52.232.7.187:30419"
,
"enode://f0d80fbc72d16df30e19aac3051eb56a7aff0c8367686702e01ea132d8b0b3ee00cadd6a859d2cca98ec68d3d574f8a8a87dba2347ec1e2818dc84bc3fa34fae@52.232.7.187:30420"
,
"enode://a199146906e4f9f2b94b195a8308d9a59a3564b92efaab898a4243fe4c2ad918b7a8e4853d9d901d94fad878270a2669d644591299c3d43de1b298c00b92b4a7@52.232.7.187:30421"
,
"enode://052036ea8736b37adbfb684d90ce43e11b3591b51f31489d7c726b03618dea4f73b1e659deb928e6bf40564edcdcf08351643f42db3d4ca1c2b5db95dad59e94@52.232.7.187:30422"
,
"enode://460e2b8c6da8f12fac96c836e7d108f4b7ec55a1c64631bb8992339e117e1c28328fee83af863196e20af1487a655d13e5ceba90e980e92502d5bac5834c1f71@52.232.7.187:30423"
,
"enode://6d2cdd13741b2e72e9031e1b93c6d9a4e68de2844aa4e939f6a8a8498a7c1d7e2ee4c64217e92a6df08c9a32c6764d173552810ef1bd2ecb356532d389dd2136@52.232.7.187:30424"
,
"enode://62105fc25ce2cd5b299647f47eaa9211502dc76f0e9f461df915782df7242ac3223e3db04356ae6ed2977ccac20f0b16864406e9ca514a40a004cb6a5d0402aa@52.232.7.187:30425"
,
"enode://e0e388fc520fd493c33f0ce16685e6f98fb6aec28f2edc14ee6b179594ee519a896425b0025bb6f0e182dd3e468443f19c70885fbc66560d000093a668a86aa8@52.232.7.187:30426"
,
"enode://63f3353a72521ea10022127a4fe6b4acbef197c3fe668fd9f4805542d8a6fcf79f6335fbab62d180a35e19b739483e740858b113fdd7c13a26ad7b4e318a5aef@52.232.7.187:30427"
,
"enode://33a42b927085678d4aefd4e70b861cfca6ef5f6c143696c4f755973fd29e64c9e658cad57a66a687a7a156da1e3688b1fbdd17bececff2ee009fff038fa5666b@52.232.7.187:30428"
,
"enode://259ab5ab5c1daee3eab7e3819ab3177b82d25c29e6c2444fdd3f956e356afae79a72840ccf2d0665fe82c81ebc3b3734da1178ac9fd5d62c67e674b69f86b6be@52.232.7.187:30429"
,
"enode://558bccad7445ce3fd8db116ed6ab4aed1324fdbdac2348417340c1764dc46d46bffe0728e5b7d5c36f12e794c289f18f57f08f085d2c65c9910a5c7a65b6a66a@52.232.7.187:30430"
,
"enode://abe60937a0657ffded718e3f84a32987286983be257bdd6004775c4b525747c2b598f4fac49c8de324de5ce75b22673fa541a7ce2d555fb7f8ca325744ae3577@52.232.7.187:30431"
,
"enode://bce6f0aaa5b230742680084df71d4f026b3eff7f564265599216a1b06b765303fdc9325de30ffd5dfdaf302ce4b14322891d2faea50ce2ca298d7409f5858339@52.232.7.187:30432"
,
"enode://21b957c4e03277d42be6660730ec1b93f540764f26c6abdb54d006611139c7081248486206dfbf64fcaffd62589e9c6b8ea77a5297e4b21a605f1bcf49483ed0@52.232.7.187:30433"
,
"enode://ff104e30e64f24c3d7328acee8b13354e5551bc8d60bb25ecbd9632d955c7e34bb2d969482d173355baad91c8282f8b592624eb3929151090da3b4448d4d58fb@52.232.7.187:30434"
,
"enode://c76e2b5f81a521bceaec1518926a21380a345df9cf463461562c6845795512497fb67679e155fc96a74350f8b78de8f4c135dd52b106dbbb9795452021d09ea5@52.232.7.187:30435"
,
"enode://3288fd860105164f3e9b69934c4eb18f7146cfab31b5a671f994e21a36e9287766e5f9f075aefbc404538c77f7c2eb2a4495020a7633a1c3970d94e9fa770aeb@52.232.7.187:30436"
,
"enode://6cea859c7396d46b20cfcaa80f9a11cd112f8684f2f782f7b4c0e1e0af9212113429522075101923b9b957603e6c32095a6a07b5e5e35183c521952ee108dfaf@52.232.7.187:30437"
,
"enode://f628ec56e4ca8317cc24cc4ac9b27b95edcce7b96e1c7f3b53e30de4a8580fe44f2f0694a513bdb0a431acaf2824074d6ace4690247bbc34c14f426af8c056ea@52.232.7.187:30438"
,
"enode://055ec8b26fc105c4f97970a1cce9773a5e34c03f511b839db742198a1c571e292c54aa799e9afb991cc8a560529b8cdf3e0c344bc6c282aff2f68eec59361ddf@52.232.7.187:30439"
,
"enode://48cb0d430c328974226aa33a931d8446cd5a8d40f3ead8f4ce7ad60faa1278192eb6d58bed91258d63e81f255fc107eec2425ce2ae8b22350dd556076e160610@52.232.7.187:30440"
,
"enode://3fadb7af7f770d5ffc6b073b8d42834bebb18ce1fe8a4fe270d2b799e7051327093960dc61d9a18870db288f7746a0e6ea2a013cd6ab0e5f97ca08199473aace@52.232.7.187:30441"
,
"enode://a5d7168024c9992769cf380ffa559a64b4f39a29d468f579559863814eb0ae0ed689ac0871a3a2b4c78b03297485ec322d578281131ef5d5c09a4beb6200a97a@52.232.7.187:30442"
,
"enode://9c57744c5b2c2d71abcbe80512652f9234d4ab041b768a2a886ab390fe6f184860f40e113290698652d7e20a8ac74d27ac8671db23eb475b6c5e6253e4693bf8@52.232.7.187:30443"
,
"enode://daca9ff0c3176045a0e0ed228dee00ec86bc0939b135dc6b1caa23745d20fd0332e1ee74ad04020e89df56c7146d831a91b89d15ca3df05ba7618769fefab376@52.232.7.187:30444"
,
"enode://a3f6af59428cb4b9acb198db15ef5554fa43c2b0c18e468a269722d64a27218963a2975eaf82750b6262e42192b5e3669ea51337b4cda62b33987981bc5e0c1a@52.232.7.187:30445"
,
"enode://fe571422fa4651c3354c85dac61911a6a6520dd3c0332967a49d4133ca30e16a8a4946fa73ca2cb5de77917ea701a905e1c3015b2f4defcd53132b61cc84127a@52.232.7.187:30446"
,
// Mainframe
"enode://ee9a5a571ea6c8a59f9a8bb2c569c865e922b41c91d09b942e8c1d4dd2e1725bd2c26149da14de1f6321a2c6fdf1e07c503c3e093fb61696daebf74d6acd916b@54.186.219.160:30399"
,
"enode://a03f0562ecb8a992ad5242345535e73483cdc18ab934d36bf24b567d43447c2cea68f89f1d51d504dd13acc30f24ebce5a150bea2ccb1b722122ce4271dc199d@52.67.248.147:30399"
,
"enode://e2cbf9eafd85903d3b1c56743035284320695e0072bc8d7396e0542aa5e1c321b236f67eab66b79c2f15d4447fa4bbe74dd67d0467da23e7eb829f60ec8a812b@13.58.169.1:30399"
,
"enode://8b8c6bda6047f1cad9fab2db4d3d02b7aa26279902c32879f7bcd4a7d189fee77fdc36ee151ce6b84279b4792e72578fd529d2274d014132465758fbfee51cee@13.209.13.15:30399"
,
"enode://63f6a8818927e429585287cf2ca0cb9b11fa990b7b9b331c2962cdc6f21807a2473b26e8256225c26caff70d7218e59586d704d49061452c6852e382c885d03c@35.154.106.174:30399"
,
"enode://ed4bd3b794ed73f18e6dcc70c6624dfec63b5654f6ab54e8f40b16eff8afbd342d4230e099ddea40e84423f81b2d2ea79799dc345257b1fec6f6c422c9d008f7@52.213.20.99:30399"
,
}
}
cmd/swarm/config.go
View file @
bbd12035
...
@@ -79,6 +79,7 @@ const (
...
@@ -79,6 +79,7 @@ const (
SWARM_ENV_STORE_PATH
=
"SWARM_STORE_PATH"
SWARM_ENV_STORE_PATH
=
"SWARM_STORE_PATH"
SWARM_ENV_STORE_CAPACITY
=
"SWARM_STORE_CAPACITY"
SWARM_ENV_STORE_CAPACITY
=
"SWARM_STORE_CAPACITY"
SWARM_ENV_STORE_CACHE_CAPACITY
=
"SWARM_STORE_CACHE_CAPACITY"
SWARM_ENV_STORE_CACHE_CAPACITY
=
"SWARM_STORE_CACHE_CAPACITY"
SWARM_ENV_BOOTNODE_MODE
=
"SWARM_BOOTNODE_MODE"
SWARM_ACCESS_PASSWORD
=
"SWARM_ACCESS_PASSWORD"
SWARM_ACCESS_PASSWORD
=
"SWARM_ACCESS_PASSWORD"
SWARM_AUTO_DEFAULTPATH
=
"SWARM_AUTO_DEFAULTPATH"
SWARM_AUTO_DEFAULTPATH
=
"SWARM_AUTO_DEFAULTPATH"
GETH_ENV_DATADIR
=
"GETH_DATADIR"
GETH_ENV_DATADIR
=
"GETH_DATADIR"
...
@@ -164,10 +165,9 @@ func configFileOverride(config *bzzapi.Config, ctx *cli.Context) (*bzzapi.Config
...
@@ -164,10 +165,9 @@ func configFileOverride(config *bzzapi.Config, ctx *cli.Context) (*bzzapi.Config
return
config
,
err
return
config
,
err
}
}
//
override
the current config with whatever is provided through the command line
//
cmdLineOverride overrides
the current config with whatever is provided through the command line
//most values are not allowed a zero value (empty string), if not otherwise noted
//
most values are not allowed a zero value (empty string), if not otherwise noted
func
cmdLineOverride
(
currentConfig
*
bzzapi
.
Config
,
ctx
*
cli
.
Context
)
*
bzzapi
.
Config
{
func
cmdLineOverride
(
currentConfig
*
bzzapi
.
Config
,
ctx
*
cli
.
Context
)
*
bzzapi
.
Config
{
if
keyid
:=
ctx
.
GlobalString
(
SwarmAccountFlag
.
Name
);
keyid
!=
""
{
if
keyid
:=
ctx
.
GlobalString
(
SwarmAccountFlag
.
Name
);
keyid
!=
""
{
currentConfig
.
BzzAccount
=
keyid
currentConfig
.
BzzAccount
=
keyid
}
}
...
@@ -258,14 +258,17 @@ func cmdLineOverride(currentConfig *bzzapi.Config, ctx *cli.Context) *bzzapi.Con
...
@@ -258,14 +258,17 @@ func cmdLineOverride(currentConfig *bzzapi.Config, ctx *cli.Context) *bzzapi.Con
currentConfig
.
LocalStoreParams
.
CacheCapacity
=
storeCacheCapacity
currentConfig
.
LocalStoreParams
.
CacheCapacity
=
storeCacheCapacity
}
}
if
ctx
.
GlobalIsSet
(
SwarmBootnodeModeFlag
.
Name
)
{
currentConfig
.
BootnodeMode
=
ctx
.
GlobalBool
(
SwarmBootnodeModeFlag
.
Name
)
}
return
currentConfig
return
currentConfig
}
}
//
override
the current config with whatver is provided in environment variables
//
envVarsOverride overrides
the current config with whatver is provided in environment variables
//most values are not allowed a zero value (empty string), if not otherwise noted
//
most values are not allowed a zero value (empty string), if not otherwise noted
func
envVarsOverride
(
currentConfig
*
bzzapi
.
Config
)
(
config
*
bzzapi
.
Config
)
{
func
envVarsOverride
(
currentConfig
*
bzzapi
.
Config
)
(
config
*
bzzapi
.
Config
)
{
if
keyid
:=
os
.
Getenv
(
SWARM_ENV_ACCOUNT
);
keyid
!=
""
{
if
keyid
:=
os
.
Getenv
(
SWARM_ENV_ACCOUNT
);
keyid
!=
""
{
currentConfig
.
BzzAccount
=
keyid
currentConfig
.
BzzAccount
=
keyid
}
}
...
@@ -364,6 +367,14 @@ func envVarsOverride(currentConfig *bzzapi.Config) (config *bzzapi.Config) {
...
@@ -364,6 +367,14 @@ func envVarsOverride(currentConfig *bzzapi.Config) (config *bzzapi.Config) {
currentConfig
.
Cors
=
cors
currentConfig
.
Cors
=
cors
}
}
if
bm
:=
os
.
Getenv
(
SWARM_ENV_BOOTNODE_MODE
);
bm
!=
""
{
bootnodeMode
,
err
:=
strconv
.
ParseBool
(
bm
)
if
err
!=
nil
{
utils
.
Fatalf
(
"invalid environment variable %s: %v"
,
SWARM_ENV_BOOTNODE_MODE
,
err
)
}
currentConfig
.
BootnodeMode
=
bootnodeMode
}
return
currentConfig
return
currentConfig
}
}
...
...
cmd/swarm/flags.go
View file @
bbd12035
...
@@ -156,6 +156,10 @@ var (
...
@@ -156,6 +156,10 @@ var (
Name
:
"compressed"
,
Name
:
"compressed"
,
Usage
:
"Prints encryption keys in compressed form"
,
Usage
:
"Prints encryption keys in compressed form"
,
}
}
SwarmBootnodeModeFlag
=
cli
.
BoolFlag
{
Name
:
"bootnode-mode"
,
Usage
:
"Run Swarm in Bootnode mode"
,
}
SwarmFeedNameFlag
=
cli
.
StringFlag
{
SwarmFeedNameFlag
=
cli
.
StringFlag
{
Name
:
"name"
,
Name
:
"name"
,
Usage
:
"User-defined name for the new feed, limited to 32 characters. If combined with topic, it will refer to a subtopic with this name"
,
Usage
:
"User-defined name for the new feed, limited to 32 characters. If combined with topic, it will refer to a subtopic with this name"
,
...
...
cmd/swarm/main.go
View file @
bbd12035
...
@@ -154,7 +154,6 @@ func init() {
...
@@ -154,7 +154,6 @@ func init() {
utils
.
BootnodesFlag
,
utils
.
BootnodesFlag
,
utils
.
KeyStoreDirFlag
,
utils
.
KeyStoreDirFlag
,
utils
.
ListenPortFlag
,
utils
.
ListenPortFlag
,
utils
.
NoDiscoverFlag
,
utils
.
DiscoveryV5Flag
,
utils
.
DiscoveryV5Flag
,
utils
.
NetrestrictFlag
,
utils
.
NetrestrictFlag
,
utils
.
NodeKeyFileFlag
,
utils
.
NodeKeyFileFlag
,
...
@@ -187,6 +186,8 @@ func init() {
...
@@ -187,6 +186,8 @@ func init() {
SwarmUploadDefaultPath
,
SwarmUploadDefaultPath
,
SwarmUpFromStdinFlag
,
SwarmUpFromStdinFlag
,
SwarmUploadMimeType
,
SwarmUploadMimeType
,
// bootnode mode
SwarmBootnodeModeFlag
,
// storage flags
// storage flags
SwarmStorePath
,
SwarmStorePath
,
SwarmStoreCapacity
,
SwarmStoreCapacity
,
...
@@ -227,12 +228,17 @@ func main() {
...
@@ -227,12 +228,17 @@ func main() {
func
keys
(
ctx
*
cli
.
Context
)
error
{
func
keys
(
ctx
*
cli
.
Context
)
error
{
privateKey
:=
getPrivKey
(
ctx
)
privateKey
:=
getPrivKey
(
ctx
)
pub
:=
hex
.
EncodeToString
(
crypto
.
FromECDSAPub
(
&
privateKey
.
PublicKey
))
pubkey
:=
crypto
.
FromECDSAPub
(
&
privateKey
.
PublicKey
)
pubkeyhex
:=
hex
.
EncodeToString
(
pubkey
)
pubCompressed
:=
hex
.
EncodeToString
(
crypto
.
CompressPubkey
(
&
privateKey
.
PublicKey
))
pubCompressed
:=
hex
.
EncodeToString
(
crypto
.
CompressPubkey
(
&
privateKey
.
PublicKey
))
bzzkey
:=
crypto
.
Keccak256Hash
(
pubkey
)
.
Hex
()
if
!
ctx
.
Bool
(
SwarmCompressedFlag
.
Name
)
{
if
!
ctx
.
Bool
(
SwarmCompressedFlag
.
Name
)
{
fmt
.
Println
(
fmt
.
Sprintf
(
"publicKey=%s"
,
pub
))
fmt
.
Println
(
fmt
.
Sprintf
(
"bzzkey=%s"
,
bzzkey
[
2
:
]))
fmt
.
Println
(
fmt
.
Sprintf
(
"publicKey=%s"
,
pubkeyhex
))
}
}
fmt
.
Println
(
fmt
.
Sprintf
(
"publicKeyCompressed=%s"
,
pubCompressed
))
fmt
.
Println
(
fmt
.
Sprintf
(
"publicKeyCompressed=%s"
,
pubCompressed
))
return
nil
return
nil
}
}
...
@@ -272,6 +278,10 @@ func bzzd(ctx *cli.Context) error {
...
@@ -272,6 +278,10 @@ func bzzd(ctx *cli.Context) error {
setSwarmBootstrapNodes
(
ctx
,
&
cfg
)
setSwarmBootstrapNodes
(
ctx
,
&
cfg
)
//setup the ethereum node
//setup the ethereum node
utils
.
SetNodeConfig
(
ctx
,
&
cfg
)
utils
.
SetNodeConfig
(
ctx
,
&
cfg
)
//always disable discovery from p2p package - swarm discovery is done with the `hive` protocol
cfg
.
P2P
.
NoDiscovery
=
true
stack
,
err
:=
node
.
New
(
&
cfg
)
stack
,
err
:=
node
.
New
(
&
cfg
)
if
err
!=
nil
{
if
err
!=
nil
{
utils
.
Fatalf
(
"can't create node: %v"
,
err
)
utils
.
Fatalf
(
"can't create node: %v"
,
err
)
...
@@ -294,6 +304,15 @@ func bzzd(ctx *cli.Context) error {
...
@@ -294,6 +304,15 @@ func bzzd(ctx *cli.Context) error {
stack
.
Stop
()
stack
.
Stop
()
}()
}()
// add swarm bootnodes, because swarm doesn't use p2p package's discovery discv5
go
func
()
{
s
:=
stack
.
Server
()
for
_
,
n
:=
range
cfg
.
P2P
.
BootstrapNodes
{
s
.
AddPeer
(
n
)
}
}()
stack
.
Wait
()
stack
.
Wait
()
return
nil
return
nil
}
}
...
...
cmd/swarm/run_test.go
View file @
bbd12035
...
@@ -254,7 +254,6 @@ func existingTestNode(t *testing.T, dir string, bzzaccount string) *testNode {
...
@@ -254,7 +254,6 @@ func existingTestNode(t *testing.T, dir string, bzzaccount string) *testNode {
node
.
Cmd
=
runSwarm
(
t
,
node
.
Cmd
=
runSwarm
(
t
,
"--port"
,
p2pPort
,
"--port"
,
p2pPort
,
"--nat"
,
"extip:127.0.0.1"
,
"--nat"
,
"extip:127.0.0.1"
,
"--nodiscover"
,
"--datadir"
,
dir
,
"--datadir"
,
dir
,
"--ipcpath"
,
conf
.
IPCPath
,
"--ipcpath"
,
conf
.
IPCPath
,
"--ens-api"
,
""
,
"--ens-api"
,
""
,
...
@@ -330,7 +329,6 @@ func newTestNode(t *testing.T, dir string) *testNode {
...
@@ -330,7 +329,6 @@ func newTestNode(t *testing.T, dir string) *testNode {
node
.
Cmd
=
runSwarm
(
t
,
node
.
Cmd
=
runSwarm
(
t
,
"--port"
,
p2pPort
,
"--port"
,
p2pPort
,
"--nat"
,
"extip:127.0.0.1"
,
"--nat"
,
"extip:127.0.0.1"
,
"--nodiscover"
,
"--datadir"
,
dir
,
"--datadir"
,
dir
,
"--ipcpath"
,
conf
.
IPCPath
,
"--ipcpath"
,
conf
.
IPCPath
,
"--ens-api"
,
""
,
"--ens-api"
,
""
,
...
...
cmd/swarm/swarm-smoke/upload_and_sync.go
View file @
bbd12035
...
@@ -49,6 +49,10 @@ func generateEndpoints(scheme string, cluster string, app string, from int, to i
...
@@ -49,6 +49,10 @@ func generateEndpoints(scheme string, cluster string, app string, from int, to i
for
port
:=
from
;
port
<
to
;
port
++
{
for
port
:=
from
;
port
<
to
;
port
++
{
endpoints
=
append
(
endpoints
,
fmt
.
Sprintf
(
"%s://%v.swarm-gateways.net"
,
scheme
,
port
))
endpoints
=
append
(
endpoints
,
fmt
.
Sprintf
(
"%s://%v.swarm-gateways.net"
,
scheme
,
port
))
}
}
}
else
if
cluster
==
"private-internal"
{
for
port
:=
from
;
port
<
to
;
port
++
{
endpoints
=
append
(
endpoints
,
fmt
.
Sprintf
(
"%s://swarm-private-internal-%v:8500"
,
scheme
,
port
))
}
}
else
{
}
else
{
for
port
:=
from
;
port
<
to
;
port
++
{
for
port
:=
from
;
port
<
to
;
port
++
{
endpoints
=
append
(
endpoints
,
fmt
.
Sprintf
(
"%s://%s-%v-%s.stg.swarm-gateways.net"
,
scheme
,
app
,
port
,
cluster
))
endpoints
=
append
(
endpoints
,
fmt
.
Sprintf
(
"%s://%s-%v-%s.stg.swarm-gateways.net"
,
scheme
,
app
,
port
,
cluster
))
...
...
cmd/swarm/swarm-smoke/upload_speed.go
View file @
bbd12035
...
@@ -35,6 +35,8 @@ var endpoint string
...
@@ -35,6 +35,8 @@ var endpoint string
func
generateEndpoint
(
scheme
string
,
cluster
string
,
app
string
,
from
int
)
{
func
generateEndpoint
(
scheme
string
,
cluster
string
,
app
string
,
from
int
)
{
if
cluster
==
"prod"
{
if
cluster
==
"prod"
{
endpoint
=
fmt
.
Sprintf
(
"%s://%v.swarm-gateways.net"
,
scheme
,
from
)
endpoint
=
fmt
.
Sprintf
(
"%s://%v.swarm-gateways.net"
,
scheme
,
from
)
}
else
if
cluster
==
"private-internal"
{
endpoint
=
fmt
.
Sprintf
(
"%s://swarm-private-internal-%v:8500"
,
scheme
,
from
)
}
else
{
}
else
{
endpoint
=
fmt
.
Sprintf
(
"%s://%s-%v-%s.stg.swarm-gateways.net"
,
scheme
,
app
,
from
,
cluster
)
endpoint
=
fmt
.
Sprintf
(
"%s://%s-%v-%s.stg.swarm-gateways.net"
,
scheme
,
app
,
from
,
cluster
)
}
}
...
...
p2p/protocols/protocol.go
View file @
bbd12035
...
@@ -423,3 +423,17 @@ func (p *Peer) Handshake(ctx context.Context, hs interface{}, verify func(interf
...
@@ -423,3 +423,17 @@ func (p *Peer) Handshake(ctx context.Context, hs interface{}, verify func(interf
}
}
return
rhs
,
nil
return
rhs
,
nil
}
}
// HasCap returns true if Peer has a capability
// with provided name.
func
(
p
*
Peer
)
HasCap
(
capName
string
)
(
yes
bool
)
{
if
p
==
nil
||
p
.
Peer
==
nil
{
return
false
}
for
_
,
c
:=
range
p
.
Caps
()
{
if
c
.
Name
==
capName
{
return
true
}
}
return
false
}
swarm/api/config.go
View file @
bbd12035
...
@@ -66,6 +66,7 @@ type Config struct {
...
@@ -66,6 +66,7 @@ type Config struct {
DeliverySkipCheck
bool
DeliverySkipCheck
bool
MaxStreamPeerServers
int
MaxStreamPeerServers
int
LightNodeEnabled
bool
LightNodeEnabled
bool
BootnodeMode
bool
SyncUpdateDelay
time
.
Duration
SyncUpdateDelay
time
.
Duration
SwapAPI
string
SwapAPI
string
Cors
string
Cors
string
...
...
swarm/network/kademlia.go
View file @
bbd12035
...
@@ -279,7 +279,7 @@ func (k *Kademlia) SuggestPeer() (suggestedPeer *BzzAddr, saturationDepth int, c
...
@@ -279,7 +279,7 @@ func (k *Kademlia) SuggestPeer() (suggestedPeer *BzzAddr, saturationDepth int, c
return
suggestedPeer
,
0
,
false
return
suggestedPeer
,
0
,
false
}
}
// On inserts
the peer as a kademlia peer into the live peers
// On inserts the peer as a kademlia peer into the live peers
func
(
k
*
Kademlia
)
On
(
p
*
Peer
)
(
uint8
,
bool
)
{
func
(
k
*
Kademlia
)
On
(
p
*
Peer
)
(
uint8
,
bool
)
{
k
.
lock
.
Lock
()
k
.
lock
.
Lock
()
defer
k
.
lock
.
Unlock
()
defer
k
.
lock
.
Unlock
()
...
...
swarm/network/protocol.go
View file @
bbd12035
...
@@ -67,6 +67,7 @@ type BzzConfig struct {
...
@@ -67,6 +67,7 @@ type BzzConfig struct {
HiveParams
*
HiveParams
HiveParams
*
HiveParams
NetworkID
uint64
NetworkID
uint64
LightNode
bool
LightNode
bool
BootnodeMode
bool
}
}
// Bzz is the swarm protocol bundle
// Bzz is the swarm protocol bundle
...
@@ -87,7 +88,7 @@ type Bzz struct {
...
@@ -87,7 +88,7 @@ type Bzz struct {
// * overlay driver
// * overlay driver
// * peer store
// * peer store
func
NewBzz
(
config
*
BzzConfig
,
kad
*
Kademlia
,
store
state
.
Store
,
streamerSpec
*
protocols
.
Spec
,
streamerRun
func
(
*
BzzPeer
)
error
)
*
Bzz
{
func
NewBzz
(
config
*
BzzConfig
,
kad
*
Kademlia
,
store
state
.
Store
,
streamerSpec
*
protocols
.
Spec
,
streamerRun
func
(
*
BzzPeer
)
error
)
*
Bzz
{
return
&
Bzz
{
bzz
:=
&
Bzz
{
Hive
:
NewHive
(
config
.
HiveParams
,
kad
,
store
),
Hive
:
NewHive
(
config
.
HiveParams
,
kad
,
store
),
NetworkID
:
config
.
NetworkID
,
NetworkID
:
config
.
NetworkID
,
LightNode
:
config
.
LightNode
,
LightNode
:
config
.
LightNode
,
...
@@ -96,6 +97,13 @@ func NewBzz(config *BzzConfig, kad *Kademlia, store state.Store, streamerSpec *p
...
@@ -96,6 +97,13 @@ func NewBzz(config *BzzConfig, kad *Kademlia, store state.Store, streamerSpec *p
streamerRun
:
streamerRun
,
streamerRun
:
streamerRun
,
streamerSpec
:
streamerSpec
,
streamerSpec
:
streamerSpec
,
}
}
if
config
.
BootnodeMode
{
bzz
.
streamerRun
=
nil
bzz
.
streamerSpec
=
nil
}
return
bzz
}
}
// UpdateLocalAddr updates underlayaddress of the running node
// UpdateLocalAddr updates underlayaddress of the running node
...
...
swarm/network/stream/delivery.go
View file @
bbd12035
...
@@ -255,8 +255,15 @@ func (d *Delivery) RequestFromPeers(ctx context.Context, req *network.Request) (
...
@@ -255,8 +255,15 @@ func (d *Delivery) RequestFromPeers(ctx context.Context, req *network.Request) (
return
true
return
true
}
}
sp
=
d
.
getPeer
(
id
)
sp
=
d
.
getPeer
(
id
)
// sp is nil, when we encounter a peer that is not registered for delivery, i.e. doesn't support the `stream` protocol
if
sp
==
nil
{
if
sp
==
nil
{
//log.Warn("Delivery.RequestFromPeers: peer not found", "id", id)
return
true
}
// nodes that do not provide stream protocol
// should not be requested, e.g. bootnodes
if
!
p
.
HasCap
(
"stream"
)
{
// TODO: if we have no errors, delete this if
log
.
Error
(
"Delivery.RequestFromPeers: peer doesn't have stream cap. we should have returned at sp == nil"
)
return
true
return
true
}
}
spID
=
&
id
spID
=
&
id
...
...
swarm/network/stream/delivery_test.go
View file @
bbd12035
...
@@ -285,7 +285,7 @@ func TestRequestFromPeers(t *testing.T) {
...
@@ -285,7 +285,7 @@ func TestRequestFromPeers(t *testing.T) {
addr
:=
network
.
RandomAddr
()
addr
:=
network
.
RandomAddr
()
to
:=
network
.
NewKademlia
(
addr
.
OAddr
,
network
.
NewKadParams
())
to
:=
network
.
NewKademlia
(
addr
.
OAddr
,
network
.
NewKadParams
())
delivery
:=
NewDelivery
(
to
,
nil
)
delivery
:=
NewDelivery
(
to
,
nil
)
protocolsPeer
:=
protocols
.
NewPeer
(
p2p
.
NewPeer
(
dummyPeerID
,
"dummy"
,
nil
),
nil
,
nil
)
protocolsPeer
:=
protocols
.
NewPeer
(
p2p
.
NewPeer
(
dummyPeerID
,
"dummy"
,
[]
p2p
.
Cap
{{
Name
:
"stream"
}}
),
nil
,
nil
)
peer
:=
network
.
NewPeer
(
&
network
.
BzzPeer
{
peer
:=
network
.
NewPeer
(
&
network
.
BzzPeer
{
BzzAddr
:
network
.
RandomAddr
(),
BzzAddr
:
network
.
RandomAddr
(),
LightNode
:
false
,
LightNode
:
false
,
...
...
swarm/network/stream/stream.go
View file @
bbd12035
...
@@ -516,6 +516,11 @@ func (r *Registry) requestPeerSubscriptions(kad *network.Kademlia, subs map[enod
...
@@ -516,6 +516,11 @@ func (r *Registry) requestPeerSubscriptions(kad *network.Kademlia, subs map[enod
// nil as base takes the node's base; we need to pass 255 as `EachConn` runs
// nil as base takes the node's base; we need to pass 255 as `EachConn` runs
// from deepest bins backwards
// from deepest bins backwards
kad
.
EachConn
(
nil
,
255
,
func
(
p
*
network
.
Peer
,
po
int
)
bool
{
kad
.
EachConn
(
nil
,
255
,
func
(
p
*
network
.
Peer
,
po
int
)
bool
{
// nodes that do not provide stream protocol
// should not be subscribed, e.g. bootnodes
if
!
p
.
HasCap
(
"stream"
)
{
return
true
}
//if the peer's bin is shallower than the kademlia depth,
//if the peer's bin is shallower than the kademlia depth,
//only the peer's bin should be subscribed
//only the peer's bin should be subscribed
if
po
<
kadDepth
{
if
po
<
kadDepth
{
...
...
swarm/storage/pyramid.go
View file @
bbd12035
...
@@ -201,8 +201,6 @@ func (pc *PyramidChunker) decrementWorkerCount() {
...
@@ -201,8 +201,6 @@ func (pc *PyramidChunker) decrementWorkerCount() {
}
}
func
(
pc
*
PyramidChunker
)
Split
(
ctx
context
.
Context
)
(
k
Address
,
wait
func
(
context
.
Context
)
error
,
err
error
)
{
func
(
pc
*
PyramidChunker
)
Split
(
ctx
context
.
Context
)
(
k
Address
,
wait
func
(
context
.
Context
)
error
,
err
error
)
{
log
.
Debug
(
"pyramid.chunker: Split()"
)
pc
.
wg
.
Add
(
1
)
pc
.
wg
.
Add
(
1
)
pc
.
prepareChunks
(
ctx
,
false
)
pc
.
prepareChunks
(
ctx
,
false
)
...
@@ -235,7 +233,6 @@ func (pc *PyramidChunker) Split(ctx context.Context) (k Address, wait func(conte
...
@@ -235,7 +233,6 @@ func (pc *PyramidChunker) Split(ctx context.Context) (k Address, wait func(conte
}
}
func
(
pc
*
PyramidChunker
)
Append
(
ctx
context
.
Context
)
(
k
Address
,
wait
func
(
context
.
Context
)
error
,
err
error
)
{
func
(
pc
*
PyramidChunker
)
Append
(
ctx
context
.
Context
)
(
k
Address
,
wait
func
(
context
.
Context
)
error
,
err
error
)
{
log
.
Debug
(
"pyramid.chunker: Append()"
)
// Load the right most unfinished tree chunks in every level
// Load the right most unfinished tree chunks in every level
pc
.
loadTree
(
ctx
)
pc
.
loadTree
(
ctx
)
...
@@ -283,8 +280,6 @@ func (pc *PyramidChunker) processor(ctx context.Context, id int64) {
...
@@ -283,8 +280,6 @@ func (pc *PyramidChunker) processor(ctx context.Context, id int64) {
}
}
func
(
pc
*
PyramidChunker
)
processChunk
(
ctx
context
.
Context
,
id
int64
,
job
*
chunkJob
)
{
func
(
pc
*
PyramidChunker
)
processChunk
(
ctx
context
.
Context
,
id
int64
,
job
*
chunkJob
)
{
log
.
Debug
(
"pyramid.chunker: processChunk()"
,
"id"
,
id
)
ref
,
err
:=
pc
.
putter
.
Put
(
ctx
,
job
.
chunk
)
ref
,
err
:=
pc
.
putter
.
Put
(
ctx
,
job
.
chunk
)
if
err
!=
nil
{
if
err
!=
nil
{
select
{
select
{
...
@@ -301,7 +296,6 @@ func (pc *PyramidChunker) processChunk(ctx context.Context, id int64, job *chunk
...
@@ -301,7 +296,6 @@ func (pc *PyramidChunker) processChunk(ctx context.Context, id int64, job *chunk
}
}
func
(
pc
*
PyramidChunker
)
loadTree
(
ctx
context
.
Context
)
error
{
func
(
pc
*
PyramidChunker
)
loadTree
(
ctx
context
.
Context
)
error
{
log
.
Debug
(
"pyramid.chunker: loadTree()"
)
// Get the root chunk to get the total size
// Get the root chunk to get the total size
chunkData
,
err
:=
pc
.
getter
.
Get
(
ctx
,
Reference
(
pc
.
key
))
chunkData
,
err
:=
pc
.
getter
.
Get
(
ctx
,
Reference
(
pc
.
key
))
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -386,7 +380,6 @@ func (pc *PyramidChunker) loadTree(ctx context.Context) error {
...
@@ -386,7 +380,6 @@ func (pc *PyramidChunker) loadTree(ctx context.Context) error {
}
}
func
(
pc
*
PyramidChunker
)
prepareChunks
(
ctx
context
.
Context
,
isAppend
bool
)
{
func
(
pc
*
PyramidChunker
)
prepareChunks
(
ctx
context
.
Context
,
isAppend
bool
)
{
log
.
Debug
(
"pyramid.chunker: prepareChunks"
,
"isAppend"
,
isAppend
)
defer
pc
.
wg
.
Done
()
defer
pc
.
wg
.
Done
()
chunkWG
:=
&
sync
.
WaitGroup
{}
chunkWG
:=
&
sync
.
WaitGroup
{}
...
...
swarm/swarm.go
View file @
bbd12035
...
@@ -84,12 +84,11 @@ type Swarm struct {
...
@@ -84,12 +84,11 @@ type Swarm struct {
tracerClose
io
.
Closer
tracerClose
io
.
Closer
}
}
// creates a new swarm service instance
//
NewSwarm
creates a new swarm service instance
// implements node.Service
// implements node.Service
// If mockStore is not nil, it will be used as the storage for chunk data.
// If mockStore is not nil, it will be used as the storage for chunk data.
// MockStore should be used only for testing.
// MockStore should be used only for testing.
func
NewSwarm
(
config
*
api
.
Config
,
mockStore
*
mock
.
NodeStore
)
(
self
*
Swarm
,
err
error
)
{
func
NewSwarm
(
config
*
api
.
Config
,
mockStore
*
mock
.
NodeStore
)
(
self
*
Swarm
,
err
error
)
{
if
bytes
.
Equal
(
common
.
FromHex
(
config
.
PublicKey
),
storage
.
ZeroAddr
)
{
if
bytes
.
Equal
(
common
.
FromHex
(
config
.
PublicKey
),
storage
.
ZeroAddr
)
{
return
nil
,
fmt
.
Errorf
(
"empty public key"
)
return
nil
,
fmt
.
Errorf
(
"empty public key"
)
}
}
...
@@ -116,10 +115,11 @@ func NewSwarm(config *api.Config, mockStore *mock.NodeStore) (self *Swarm, err e
...
@@ -116,10 +115,11 @@ func NewSwarm(config *api.Config, mockStore *mock.NodeStore) (self *Swarm, err e
config
.
HiveParams
.
Discovery
=
true
config
.
HiveParams
.
Discovery
=
true
bzzconfig
:=
&
network
.
BzzConfig
{
bzzconfig
:=
&
network
.
BzzConfig
{
NetworkID
:
config
.
NetworkID
,
NetworkID
:
config
.
NetworkID
,
OverlayAddr
:
common
.
FromHex
(
config
.
BzzKey
),
OverlayAddr
:
common
.
FromHex
(
config
.
BzzKey
),
HiveParams
:
config
.
HiveParams
,
HiveParams
:
config
.
HiveParams
,
LightNode
:
config
.
LightNodeEnabled
,
LightNode
:
config
.
LightNodeEnabled
,
BootnodeMode
:
config
.
BootnodeMode
,
}
}
self
.
stateStore
,
err
=
state
.
NewDBStore
(
filepath
.
Join
(
config
.
Path
,
"state-store.db"
))
self
.
stateStore
,
err
=
state
.
NewDBStore
(
filepath
.
Join
(
config
.
Path
,
"state-store.db"
))
...
@@ -455,12 +455,16 @@ func (self *Swarm) Stop() error {
...
@@ -455,12 +455,16 @@ func (self *Swarm) Stop() error {
return
err
return
err
}
}
// implements the node.Service interface
// Protocols implements the node.Service interface
func
(
self
*
Swarm
)
Protocols
()
(
protos
[]
p2p
.
Protocol
)
{
func
(
s
*
Swarm
)
Protocols
()
(
protos
[]
p2p
.
Protocol
)
{
protos
=
append
(
protos
,
self
.
bzz
.
Protocols
()
...
)
if
s
.
config
.
BootnodeMode
{
protos
=
append
(
protos
,
s
.
bzz
.
Protocols
()
...
)
}
else
{
protos
=
append
(
protos
,
s
.
bzz
.
Protocols
()
...
)
if
self
.
ps
!=
nil
{
if
s
.
ps
!=
nil
{
protos
=
append
(
protos
,
self
.
ps
.
Protocols
()
...
)
protos
=
append
(
protos
,
s
.
ps
.
Protocols
()
...
)
}
}
}
return
return
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment