Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
destream-blockchain
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
2
Issues
2
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DeStream-public
destream-blockchain
Commits
8d9a202e
Commit
8d9a202e
authored
Sep 05, 2018
by
Alexey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code review fixes have been introduced for genesis-block generation routine
Some solution tuning performed
parent
02cb8519
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
110 additions
and
133 deletions
+110
-133
launchSettings.json
Sources/DeStream.DeStreamD/Properties/launchSettings.json
+8
-2
DeStream.Stratis.Bitcoin.FullNode.sln
Sources/DeStream.Stratis.Bitcoin.FullNode.sln
+7
-1
Network.cs
Sources/NBitcoin/Network.cs
+2
-0
DeStreamMain.cs
Sources/NBitcoin/Networks/DeStreamMain.cs
+53
-21
DeStreamTest.cs
Sources/NBitcoin/Networks/DeStreamTest.cs
+40
-109
No files found.
Sources/DeStream.DeStreamD/Properties/launchSettings.json
View file @
8d9a202e
{
"profiles"
:
{
"Stratis.StratisD"
:
{
"DeStream.DeStream"
:
{
"commandName"
:
"Project"
},
"DeStream.DeStreamD Test"
:
{
"commandName"
:
"Project"
,
"commandLineArgs"
:
"-testnet -debug -loglevel=trace "
"commandLineArgs"
:
"-testnet -debug -loglevel=trace"
},
"Stratis.StratisD"
:
{
"commandName"
:
"Project"
},
"Stratis.StratisD Test"
:
{
"commandName"
:
"Project"
,
...
...
Sources/DeStream.Stratis.Bitcoin.FullNode.sln
View file @
8d9a202e
...
...
@@ -103,7 +103,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stratis.Bitcoin.Tests.Walle
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stratis.Bitcoin.IntegrationTests.Common", "Stratis.Bitcoin.IntegrationTests.Common\Stratis.Bitcoin.IntegrationTests.Common.csproj", "{F7DD01DA-B888-4817-A5FA-3A87B69BFCA7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeStream.DeStreamD.ForTest", "DeStream.DeStreamD.ForTest\DeStream.DeStreamD.ForTest.csproj", "{D6749732-118C-4BDD-B184-5229AAB83341}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeStream.DeStreamD.ForTest", "DeStream.DeStreamD.ForTest\DeStream.DeStreamD.ForTest.csproj", "{D6749732-118C-4BDD-B184-5229AAB83341}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DeStream", "DeStream", "{4F374E46-C086-44BE-B785-2F88E2093016}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
...
...
@@ -308,6 +310,10 @@ Global
{6181B889-81B0-4A1E-A29F-E20DCD8BFC1F} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45}
{CB7A2800-8E98-4CD5-A88A-832E03AF7ABF} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
{978482B2-AE17-421E-AD6F-ED9667C6B8A1} = {A0CEDD86-D446-436E-8C35-261B30CEE5D3}
{DFFB8C9F-4186-417F-A843-A5E1E6125164} = {4F374E46-C086-44BE-B785-2F88E2093016}
{5303E8B0-C422-4D1C-8096-24DF6AF75E31} = {4F374E46-C086-44BE-B785-2F88E2093016}
{CFE3D6A4-8B4F-4466-984B-74909ED2DA20} = {4F374E46-C086-44BE-B785-2F88E2093016}
{79B71F10-9B43-45C2-ADA4-A84324810D5C} = {4F374E46-C086-44BE-B785-2F88E2093016}
{B6FB52FE-F754-49B0-A65F-02F5C82B33EE} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
{F1755154-88DC-4434-98FB-7D22C95BA640} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
{F7DD01DA-B888-4817-A5FA-3A87B69BFCA7} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
...
...
Sources/NBitcoin/Network.cs
View file @
8d9a202e
...
...
@@ -198,6 +198,8 @@ namespace NBitcoin
/// </summary>
public
Money
GenesisReward
{
get
;
protected
set
;
}
public
string
GenesisWalletAddress
{
get
;
protected
set
;
}
/// <summary>
/// Mines a new genesis block, to use with a new network.
/// Typically, 3 such genesis blocks need to be created when bootstrapping a new coin: for Main, Test and Reg networks.
...
...
Sources/NBitcoin/Networks/DeStreamMain.cs
View file @
8d9a202e
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
NBitcoin.BouncyCastle.Math
;
using
NBitcoin.DataEncoders
;
...
...
@@ -12,6 +13,8 @@ namespace NBitcoin.Networks
public
DeStreamMain
()
{
string
InitialWalletAddress
=
"TPPL2wmtxGzP8U6hQsGkRA9yCMsazB33ft"
;
decimal
InitialCoins
=
6000000000
;
var
messageStart
=
new
byte
[
4
];
messageStart
[
0
]
=
0x70
;
...
...
@@ -31,6 +34,7 @@ namespace NBitcoin.Networks
this
.
MinRelayTxFee
=
10000
;
this
.
MaxTimeOffsetSeconds
=
StratisMaxTimeOffsetSeconds
;
this
.
MaxTipAge
=
StratisDefaultMaxTipAgeInSeconds
;
this
.
CoinTicker
=
"DST"
;
this
.
Consensus
.
SubsidyHalvingInterval
=
210000
;
this
.
Consensus
.
MajorityEnforceBlockUpgrade
=
750
;
...
...
@@ -55,11 +59,6 @@ namespace NBitcoin.Networks
this
.
Consensus
.
CoinType
=
105
;
this
.
Consensus
.
DefaultAssumeValid
=
new
uint256
(
"0x55a8205ae4bbf18f4d238c43f43005bd66e0b1f679b39e2c5c62cf6903693a5e"
);
// 795970
this
.
Genesis
=
CreateStratisGenesisBlock
(
this
.
Consensus
.
ConsensusFactory
,
1470467000
,
1831645
,
0x1e0fffff
,
1
,
Money
.
Zero
);
this
.
Consensus
.
HashGenesisBlock
=
this
.
Genesis
.
GetHash
();
Assert
(
this
.
Consensus
.
HashGenesisBlock
==
uint256
.
Parse
(
"0x0000066e91e46e5a264d42c89e1204963b2ee6be230b443e9159020539d972af"
));
Assert
(
this
.
Genesis
.
Header
.
HashMerkleRoot
==
uint256
.
Parse
(
"0x65a26bc20b0351aebf05829daefa8f7db2f800623439f3c114257c91447f1518"
));
this
.
Checkpoints
=
new
Dictionary
<
int
,
CheckpointInfo
>
{
{
0
,
new
CheckpointInfo
(
new
uint256
(
"0x0000066e91e46e5a264d42c89e1204963b2ee6be230b443e9159020539d972af"
),
new
uint256
(
"0x0000000000000000000000000000000000000000000000000000000000000000"
))
},
...
...
@@ -81,6 +80,7 @@ namespace NBitcoin.Networks
{
576000
,
new
CheckpointInfo
(
new
uint256
(
"0xe705476b940e332098d1d5b475d7977312ff8c08cbc8256ce46a3e2c6d5408b8"
),
new
uint256
(
"0x10e31bb5e245ea19650280cfd3ac1a76259fa0002d02e861d2ab5df290534b56"
))
},
};
this
.
Base58Prefixes
=
new
byte
[
12
][];
this
.
Base58Prefixes
[(
int
)
Base58Type
.
PUBKEY_ADDRESS
]
=
new
byte
[]
{
(
63
)
};
this
.
Base58Prefixes
[(
int
)
Base58Type
.
SCRIPT_ADDRESS
]
=
new
byte
[]
{
(
125
)
};
this
.
Base58Prefixes
[(
int
)
Base58Type
.
SECRET_KEY
]
=
new
byte
[]
{
(
63
+
128
)
};
...
...
@@ -95,32 +95,64 @@ namespace NBitcoin.Networks
this
.
Base58Prefixes
[(
int
)
Base58Type
.
COLORED_ADDRESS
]
=
new
byte
[]
{
0x13
};
var
encoder
=
new
Bech32Encoder
(
"bc"
);
this
.
Bech32Encoders
=
new
Bech32Encoder
[
2
];
this
.
Bech32Encoders
[(
int
)
Bech32Type
.
WITNESS_PUBKEY_ADDRESS
]
=
encoder
;
this
.
Bech32Encoders
[(
int
)
Bech32Type
.
WITNESS_SCRIPT_ADDRESS
]
=
encoder
;
this
.
DNSSeeds
.
AddRange
(
new
[]
this
.
DNSSeeds
=
new
List
<
DNSSeedData
>
{
new
DNSSeedData
(
"node1.destream.io"
,
"node1.destream.io"
),
new
DNSSeedData
(
"node2.destream.io"
,
"node2.destream.io"
)
});
};
string
[]
seedNodes
=
{
"95.128.181.103"
,
"95.128.181.80"
};
this
.
SeedNodes
=
ConvertToNetworkAddresses
(
seedNodes
,
this
.
DefaultPort
).
ToList
();
// Create the genesis block.
this
.
GenesisTime
=
1470467000
;
this
.
GenesisNonce
=
1831645
;
this
.
GenesisBits
=
0x1e0fffff
;
this
.
GenesisVersion
=
1
;
this
.
GenesisReward
=
Money
.
Coins
(
InitialCoins
);
this
.
GenesisWalletAddress
=
InitialWalletAddress
;
this
.
Genesis
=
CreateDeStreamGenesisBlock
(
this
.
Consensus
.
ConsensusFactory
,
this
.
GenesisTime
,
this
.
GenesisNonce
,
this
.
GenesisBits
,
this
.
GenesisVersion
,
this
.
GenesisReward
,
this
.
GenesisWalletAddress
);
this
.
Consensus
.
HashGenesisBlock
=
this
.
Genesis
.
GetHash
();
// Assert(this.Consensus.HashGenesisBlock == uint256.Parse("c5974b227ccb19ebd97578285a5937bb4bfb6dcdbf473966d8a2f9c714a8dbb0"));
// Assert(this.Genesis.Header.HashMerkleRoot == uint256.Parse("9e3fff58fb1ba15a69198e22d99572fa024afb754bfe1d3b8d28b86fd9de62df"));
}
var
seeds
=
new
[]
{
"95.128.181.103"
,
"95.128.181.80"
};
// Convert the seeds array into usable address objects.
Random
rand
=
new
Random
();
TimeSpan
oneWeek
=
TimeSpan
.
FromDays
(
7
);
foreach
(
string
seed
in
seeds
)
protected
Block
CreateDeStreamGenesisBlock
(
ConsensusFactory
consensusFactory
,
uint
nTime
,
uint
nNonce
,
uint
nBits
,
int
nVersion
,
Money
InitialCoins
,
string
InitialWalletAddress
)
{
string
pszTimestamp
=
"DESTREAM IS THE FIRST DECENTRALIZED GLOBAL FINANCIAL ECOSYSTEM FOR STREAMERS"
;
Transaction
txNew
=
consensusFactory
.
CreateTransaction
();
txNew
.
Version
=
1
;
txNew
.
Time
=
nTime
;
txNew
.
AddInput
(
new
TxIn
()
{
// It'll only connect to one or two seed nodes because once it connects,
// it'll get a pile of addresses with newer timestamps.
// Seed nodes are given a random 'last seen time' of between one and two weeks ago.
NetworkAddress
addr
=
new
NetworkAddress
ScriptSig
=
new
Script
(
Op
.
GetPushOp
(
0
),
new
Op
()
{
Time
=
DateTime
.
UtcNow
-
(
TimeSpan
.
FromSeconds
(
rand
.
NextDouble
()
*
oneWeek
.
TotalSeconds
))
-
oneWeek
,
Endpoint
=
Utils
.
ParseIpEndpoint
(
seed
,
this
.
DefaultPort
)
};
Code
=
(
OpcodeType
)
0x1
,
PushData
=
new
[]
{
(
byte
)
42
}
},
Op
.
GetPushOp
(
Encoders
.
ASCII
.
DecodeData
(
pszTimestamp
)))
});
byte
[]
prefix
=
this
.
Base58Prefixes
[(
int
)
Base58Type
.
PUBKEY_ADDRESS
];
byte
[]
destination_publicKey
=
Encoders
.
Base58Check
.
DecodeData
(
InitialWalletAddress
).
Skip
(
prefix
.
Length
).
ToArray
();
Script
destination
=
(
new
KeyId
(
new
uint160
(
destination_publicKey
))).
ScriptPubKey
;
this
.
SeedNodes
.
Add
(
addr
);
}
txNew
.
AddOutput
(
new
TxOut
(
InitialCoins
,
destination
));
Block
genesis
=
consensusFactory
.
CreateBlock
();
genesis
.
Header
.
BlockTime
=
Utils
.
UnixTimeToDateTime
(
nTime
);
genesis
.
Header
.
Bits
=
nBits
;
genesis
.
Header
.
Nonce
=
nNonce
;
genesis
.
Header
.
Version
=
nVersion
;
genesis
.
Transactions
.
Add
(
txNew
);
genesis
.
Header
.
HashPrevBlock
=
uint256
.
Zero
;
genesis
.
UpdateMerkleRoot
();
return
genesis
;
}
}
}
Sources/NBitcoin/Networks/DeStreamTest.cs
View file @
8d9a202e
This diff is collapsed.
Click to expand it.
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