aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2018-11-06 22:12:40 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:52 +0800
commit1756fa0135920beb749c313bdd966497bc1bff28 (patch)
tree32dd160181a3ce6348f4319cf249f4c6eed96ac7 /core
parente79feadf101f8cf05ce32ca5be0a9e44a75da1a9 (diff)
downloadgo-tangerine-1756fa0135920beb749c313bdd966497bc1bff28.tar.gz
go-tangerine-1756fa0135920beb749c313bdd966497bc1bff28.tar.zst
go-tangerine-1756fa0135920beb749c313bdd966497bc1bff28.zip
core: vm: governance: add node info
Diffstat (limited to 'core')
-rw-r--r--core/blockchain.go4
-rw-r--r--core/gen_genesis_account.go6
-rw-r--r--core/genesis.go15
-rw-r--r--core/genesis_alloc.go2
-rw-r--r--core/mkalloc.go14
-rw-r--r--core/vm/governance.go118
6 files changed, 149 insertions, 10 deletions
diff --git a/core/blockchain.go b/core/blockchain.go
index 04b154ade..c44d2633a 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -231,6 +231,10 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *par
}
}
}
+
+ // Set genesis round height mapping.
+ bc.roundHeightMap.Store(0, 0)
+
// Take ownership of this particular state
go bc.update()
return bc, nil
diff --git a/core/gen_genesis_account.go b/core/gen_genesis_account.go
index 1a5653e4b..15393d978 100644
--- a/core/gen_genesis_account.go
+++ b/core/gen_genesis_account.go
@@ -23,6 +23,7 @@ func (g GenesisAccount) MarshalJSON() ([]byte, error) {
Nonce math.HexOrDecimal64 `json:"nonce,omitempty"`
Staked *math.HexOrDecimal256 `json:"staked"`
PublicKey hexutil.Bytes `json:"publicKey"`
+ NodeInfo NodeInfo `json:"info"`
PrivateKey hexutil.Bytes `json:"secretKey,omitempty"`
}
var enc GenesisAccount
@@ -37,6 +38,7 @@ func (g GenesisAccount) MarshalJSON() ([]byte, error) {
enc.Nonce = math.HexOrDecimal64(g.Nonce)
enc.Staked = (*math.HexOrDecimal256)(g.Staked)
enc.PublicKey = g.PublicKey
+ enc.NodeInfo = g.NodeInfo
enc.PrivateKey = g.PrivateKey
return json.Marshal(&enc)
}
@@ -50,6 +52,7 @@ func (g *GenesisAccount) UnmarshalJSON(input []byte) error {
Nonce *math.HexOrDecimal64 `json:"nonce,omitempty"`
Staked *math.HexOrDecimal256 `json:"staked"`
PublicKey *hexutil.Bytes `json:"publicKey"`
+ NodeInfo *NodeInfo `json:"info"`
PrivateKey *hexutil.Bytes `json:"secretKey,omitempty"`
}
var dec GenesisAccount
@@ -78,6 +81,9 @@ func (g *GenesisAccount) UnmarshalJSON(input []byte) error {
if dec.PublicKey != nil {
g.PublicKey = *dec.PublicKey
}
+ if dec.NodeInfo != nil {
+ g.NodeInfo = *dec.NodeInfo
+ }
if dec.PrivateKey != nil {
g.PrivateKey = *dec.PrivateKey
}
diff --git a/core/genesis.go b/core/genesis.go
index 8b957edd2..38b8c360b 100644
--- a/core/genesis.go
+++ b/core/genesis.go
@@ -80,6 +80,14 @@ func (ga *GenesisAlloc) UnmarshalJSON(data []byte) error {
return nil
}
+// NodeInfo represents the info of a node.
+type NodeInfo struct {
+ Name string `json:"name"`
+ Email string `json:"email"`
+ Location string `json:"location"`
+ Url string `json:"url"`
+}
+
// GenesisAccount is an account in the state of the genesis block.
type GenesisAccount struct {
Code []byte `json:"code,omitempty"`
@@ -88,6 +96,7 @@ type GenesisAccount struct {
Nonce uint64 `json:"nonce,omitempty"`
Staked *big.Int `json:"staked"`
PublicKey []byte `json:"publicKey"`
+ NodeInfo NodeInfo `json:"info"`
PrivateKey []byte `json:"secretKey,omitempty"` // for tests
}
@@ -285,7 +294,9 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block {
account.Staked = big.NewInt(0)
}
if account.Staked.Cmp(big.NewInt(0)) > 0 {
- govStateHelper.Stake(addr, account.PublicKey, account.Staked)
+ govStateHelper.Stake(addr, account.PublicKey, account.Staked,
+ account.NodeInfo.Name, account.NodeInfo.Email,
+ account.NodeInfo.Location, account.NodeInfo.Url)
}
}
// Genesis CRS.
@@ -420,6 +431,7 @@ func decodePrealloc(data string) GenesisAlloc {
Staked *big.Int
Code []byte
PublicKey []byte
+ NodeInfo NodeInfo
}
var p []struct {
@@ -436,6 +448,7 @@ func decodePrealloc(data string) GenesisAlloc {
Staked: account.Account.Staked,
Code: account.Account.Code,
PublicKey: account.Account.PublicKey,
+ NodeInfo: account.Account.NodeInfo,
}
}
return ga
diff --git a/core/genesis_alloc.go b/core/genesis_alloc.go
index 60f6e717b..ffe360457 100644
--- a/core/genesis_alloc.go
+++ b/core/genesis_alloc.go
@@ -21,6 +21,6 @@ package core
// Use mkalloc.go to create/update them.
// nolint: misspell
-const mainnetAllocData = "\xf9\x02\x0e\xe4\x94\x12E\xa8g/\xa8\x81\u03c5\x8e\xf0\x1d4\xc4+U\u0672c\xff\u038a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\x80\x80\x80\xf8o\x946\x1eIX\xbd\x8bM\x03\\h\xc4s\x19>w\xfd\xabj\xea\x9d\xf8X\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04\f/\a\xcf\"\x96n\xba\xa1\x9d\xd8}\xe1\x1d\x04\xf9\xa6\x06\xe8>u\xa5)Utv\nZM\xd8(\a\xe7\xd9\xf2\x8f\x86\xcd8\x98q\u0753\x1aG|\xacd\xe23\xa6\xf0\x98\u0572W\x87\x1d\x81c\xdc\x1b\xdd\xcf\xf8o\x94\xb6\xa2\xe2p\xb5O\x19\xb4\x00-e5\xa7\x1c\xfd\xd1\xca\x1f_\xc1\xf8X\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04c\xf7\x8d9\x8fk\x04)R\x06*&\xf3U\x1aN)J\x11\bK\x10\x06\xc8\xd67d7\xb7$\x88\xd8\xf3\xafk\x84\x991\xc06$\xad-X\x19\x00\xe9\xad_<\xfe\xee\xd0@\u01d9\xe50\x8c\xd8\x01(S\xfb\xf8o\x94\xb6\xbb\xbe9\x0311\xe4(\u0563TXV\xa5\x96\xca\xcbx\x10\xf8X\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04\xa1\x11\x8c\x8f\x1c.)=\xe5(\xe5\xb4Z\xc5\xe6Qg\xafL\xb4\xd1\b\x87\x92J\x9f\x83\x92\x87\xd0`\xda&AN\x97\x1c\xabu\x01>V\r\xfe\u01c9{\x19\x83\xea\xa61\xae/\x16\xea@bRS\x10\xed\xd8\xea\xf8o\x94\xbcq\xc0\xf2\xae\xcaF\xfa\x00\x01\xe7e\x96P)\xb1j\x06\x04\x9e\xf8X\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04\xa1*\x01_'\u064eS\x05I\x8d#\xae\xac\xde(\x1eH\xaa\xd9\x18\xae\x87\xd7\xf6\x17\x84\xabC\x82\x89S\u06d9\xbf\x1fDBb\x94\xcb\xc2\x1e2\xcf:\x99\x12/,\xe8\xa3[\xa7\x18\xa7\xc8\x14\xee\u01fa\xe9\xa3\xea\u453f\x8cH\xa6\xba\xccF\x90\u007f\x9b\x89s-%\xe4z-|\xf7\u038a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\x80\x80\x80"
+const mainnetAllocData = "\xf9\x03+\xe9\x94\x12E\xa8g/\xa8\x81\u03c5\x8e\xf0\x1d4\xc4+U\u0672c\xff\u04ca\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\x80\x80\x80\u0100\x80\x80\x80\xf8\xa9\x946\x1eIX\xbd\x8bM\x03\\h\xc4s\x19>w\xfd\xabj\xea\x9d\xf8\x92\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04\f/\a\xcf\"\x96n\xba\xa1\x9d\xd8}\xe1\x1d\x04\xf9\xa6\x06\xe8>u\xa5)Utv\nZM\xd8(\a\xe7\xd9\xf2\x8f\x86\xcd8\x98q\u0753\x1aG|\xacd\xe23\xa6\xf0\x98\u0572W\x87\x1d\x81c\xdc\x1b\xdd\xcf\xf88\x86DEXON1\x8fnode1@dexon.org\x8eTaipei, Taiwan\x91https://dexon.org\xf8\xa9\x94\xb6\xa2\xe2p\xb5O\x19\xb4\x00-e5\xa7\x1c\xfd\xd1\xca\x1f_\xc1\xf8\x92\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04c\xf7\x8d9\x8fk\x04)R\x06*&\xf3U\x1aN)J\x11\bK\x10\x06\xc8\xd67d7\xb7$\x88\xd8\xf3\xafk\x84\x991\xc06$\xad-X\x19\x00\xe9\xad_<\xfe\xee\xd0@\u01d9\xe50\x8c\xd8\x01(S\xfb\xf88\x86DEXON3\x8fnode3@dexon.org\x8eTaipei, Taiwan\x91https://dexon.org\xf8\xa9\x94\xb6\xbb\xbe9\x0311\xe4(\u0563TXV\xa5\x96\xca\xcbx\x10\xf8\x92\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04\xa1\x11\x8c\x8f\x1c.)=\xe5(\xe5\xb4Z\xc5\xe6Qg\xafL\xb4\xd1\b\x87\x92J\x9f\x83\x92\x87\xd0`\xda&AN\x97\x1c\xabu\x01>V\r\xfe\u01c9{\x19\x83\xea\xa61\xae/\x16\xea@bRS\x10\xed\xd8\xea\xf88\x86DEXON4\x8fnode4@dexon.org\x8eTaipei, Taiwan\x91https://dexon.org\xf8\xa9\x94\xbcq\xc0\xf2\xae\xcaF\xfa\x00\x01\xe7e\x96P)\xb1j\x06\x04\x9e\xf8\x92\x8965\u026d\xc5\u07a0\x00\x00\x89\x1b\x1a\xe4\xd6\xe2\xefP\x00\x00\x80\xb8A\x04\xa1*\x01_'\u064eS\x05I\x8d#\xae\xac\xde(\x1eH\xaa\xd9\x18\xae\x87\xd7\xf6\x17\x84\xabC\x82\x89S\u06d9\xbf\x1fDBb\x94\xcb\xc2\x1e2\xcf:\x99\x12/,\xe8\xa3[\xa7\x18\xa7\xc8\x14\xee\u01fa\xe9\xa3\xea\xf88\x86DEXON2\x8fnode2@dexon.org\x8eTaipei, Taiwan\x91https://dexon.org\u953f\x8cH\xa6 \xba\xccF\x90\u007f\x9b\x89s-%\xe4z-|\xf7\u04ca\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\x80\x80\x80\u0100\x80\x80\x80\xea\x94\xe0\xf8Y4\x03S\x85F\x93\xf57\xea3q\x06\xa3>\x9f\xea\xb0\u050bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\x80\x80\x80\u0100\x80\x80\x80"
const testnetAllocData = mainnetAllocData
diff --git a/core/mkalloc.go b/core/mkalloc.go
index cc246b5a8..a871685f6 100644
--- a/core/mkalloc.go
+++ b/core/mkalloc.go
@@ -38,11 +38,19 @@ import (
"github.com/dexon-foundation/dexon/rlp"
)
+type nodeInfo struct {
+ Name string
+ Email string
+ Location string
+ Url string
+}
+
type accountData struct {
Balance *big.Int
Staked *big.Int
Code []byte
PublicKey []byte
+ NodeInfo nodeInfo
}
type allocItem struct {
@@ -67,6 +75,12 @@ func makelist(g *core.Genesis) allocList {
Balance: account.Balance,
Staked: account.Staked,
PublicKey: account.PublicKey,
+ NodeInfo: nodeInfo{
+ Name: account.NodeInfo.Name,
+ Email: account.NodeInfo.Email,
+ Location: account.NodeInfo.Location,
+ Url: account.NodeInfo.Url,
+ },
}})
}
sort.Sort(a)
diff --git a/core/vm/governance.go b/core/vm/governance.go
index 46effcc29..3361be671 100644
--- a/core/vm/governance.go
+++ b/core/vm/governance.go
@@ -127,6 +127,22 @@ const abiJSON = `
{
"name": "staked",
"type": "uint256"
+ },
+ {
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "name": "url",
+ "type": "string"
}
],
"payable": false,
@@ -568,6 +584,22 @@ const abiJSON = `
{
"name": "PublicKey",
"type": "bytes"
+ },
+ {
+ "name": "Name",
+ "type": "string"
+ },
+ {
+ "name": "Email",
+ "type": "string"
+ },
+ {
+ "name": "Location",
+ "type": "string"
+ },
+ {
+ "name": "Url",
+ "type": "string"
}
],
"name": "stake",
@@ -692,11 +724,17 @@ func RunGovernanceContract(evm *EVM, input []byte, contract *Contract) (
}
return g.proposeCRS(args.Round, args.SignedCRS)
case "stake":
- var publicKey []byte
- if err := method.Inputs.Unpack(&publicKey, arguments); err != nil {
+ args := struct {
+ PublicKey []byte
+ Name string
+ Email string
+ Location string
+ Url string
+ }{}
+ if err := method.Inputs.Unpack(&args, arguments); err != nil {
return nil, errExecutionReverted
}
- return g.stake(publicKey)
+ return g.stake(args.PublicKey, args.Name, args.Email, args.Location, args.Url)
case "snapshotRound":
args := struct {
Round *big.Int
@@ -844,7 +882,9 @@ func RunGovernanceContract(evm *EVM, input []byte, contract *Contract) (
return nil, errExecutionReverted
}
info := g.state.Node(index)
- res, err := method.Outputs.Pack(info.Owner, info.PublicKey, info.Staked)
+ res, err := method.Outputs.Pack(
+ info.Owner, info.PublicKey, info.Staked,
+ info.Name, info.Email, info.Location, info.Url)
if err != nil {
return nil, errExecutionReverted
}
@@ -1080,6 +1120,10 @@ func (s *GovernanceStateHelper) PushRoundHeight(height *big.Int) {
// address owner;
// bytes publicKey;
// uint256 staked;
+// string name;
+// string email;
+// string location;
+// string url;
// }
//
// Node[] nodes;
@@ -1088,8 +1132,14 @@ type nodeInfo struct {
Owner common.Address
PublicKey []byte
Staked *big.Int
+ Name string
+ Email string
+ Location string
+ Url string
}
+const nodesInfoSize = 7
+
func (s *GovernanceStateHelper) NodesLength() *big.Int {
return s.getStateBigInt(big.NewInt(nodesLoc))
}
@@ -1097,7 +1147,8 @@ func (s *GovernanceStateHelper) Node(index *big.Int) *nodeInfo {
node := new(nodeInfo)
arrayBaseLoc := s.getSlotLoc(big.NewInt(nodesLoc))
- elementBaseLoc := new(big.Int).Add(arrayBaseLoc, new(big.Int).Mul(index, big.NewInt(3)))
+ elementBaseLoc := new(big.Int).Add(arrayBaseLoc,
+ new(big.Int).Mul(index, big.NewInt(nodesInfoSize)))
// owner.
loc := elementBaseLoc
@@ -1111,6 +1162,22 @@ func (s *GovernanceStateHelper) Node(index *big.Int) *nodeInfo {
loc = new(big.Int).Add(elementBaseLoc, big.NewInt(2))
node.Staked = s.getStateBigInt(loc)
+ // name.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(3))
+ node.Name = string(s.readBytes(loc))
+
+ // email.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(4))
+ node.Email = string(s.readBytes(loc))
+
+ // location.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(5))
+ node.Location = string(s.readBytes(loc))
+
+ // url.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(6))
+ node.Url = string(s.readBytes(loc))
+
return node
}
func (s *GovernanceStateHelper) PushNode(n *nodeInfo) {
@@ -1122,7 +1189,8 @@ func (s *GovernanceStateHelper) PushNode(n *nodeInfo) {
}
func (s *GovernanceStateHelper) UpdateNode(index *big.Int, n *nodeInfo) {
arrayBaseLoc := s.getSlotLoc(big.NewInt(nodesLoc))
- elementBaseLoc := new(big.Int).Add(arrayBaseLoc, new(big.Int).Mul(index, big.NewInt(3)))
+ elementBaseLoc := new(big.Int).Add(arrayBaseLoc,
+ new(big.Int).Mul(index, big.NewInt(nodesInfoSize)))
// owner.
loc := elementBaseLoc
@@ -1135,6 +1203,22 @@ func (s *GovernanceStateHelper) UpdateNode(index *big.Int, n *nodeInfo) {
// staked.
loc = new(big.Int).Add(elementBaseLoc, big.NewInt(2))
s.setStateBigInt(loc, n.Staked)
+
+ // name.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(3))
+ s.writeBytes(loc, []byte(n.Name))
+
+ // email.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(4))
+ s.writeBytes(loc, []byte(n.Email))
+
+ // location.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(5))
+ s.writeBytes(loc, []byte(n.Location))
+
+ // url.
+ loc = new(big.Int).Add(elementBaseLoc, big.NewInt(6))
+ s.writeBytes(loc, []byte(n.Url))
}
func (s *GovernanceStateHelper) Nodes() []*nodeInfo {
var nodes []*nodeInfo
@@ -1298,12 +1382,18 @@ func (s *GovernanceStateHelper) MinBlockInterval() *big.Int {
}
// Stake is a helper function for creating genesis state.
-func (s *GovernanceStateHelper) Stake(addr common.Address, publicKey []byte, staked *big.Int) {
+func (s *GovernanceStateHelper) Stake(
+ addr common.Address, publicKey []byte, staked *big.Int,
+ name, email, location, url string) {
offset := s.NodesLength()
s.PushNode(&nodeInfo{
Owner: addr,
PublicKey: publicKey,
Staked: staked,
+ Name: name,
+ Email: email,
+ Location: location,
+ Url: url,
})
s.PutOffset(addr, offset)
}
@@ -1530,7 +1620,15 @@ func (g *GovernanceContract) updateConfiguration(config *params.DexconConfig) ([
return nil, nil
}
-func (g *GovernanceContract) stake(publicKey []byte) ([]byte, error) {
+func (g *GovernanceContract) stake(
+ publicKey []byte, name, email, location, url string) ([]byte, error) {
+
+ // Reject invalid inputs.
+ if len(name) >= 32 || len(email) >= 32 || len(location) >= 32 || len(url) >= 128 {
+ g.penalize()
+ return nil, errExecutionReverted
+ }
+
caller := g.contract.Caller()
offset := g.state.Offset(caller)
@@ -1545,6 +1643,10 @@ func (g *GovernanceContract) stake(publicKey []byte) ([]byte, error) {
Owner: caller,
PublicKey: publicKey,
Staked: g.contract.Value(),
+ Name: name,
+ Email: email,
+ Location: location,
+ Url: url,
})
g.state.PutOffset(caller, offset)
t-p2p?h=gnome-3.24&id=066d6e1c9a310424fd6dab9bd7c8d78cd2b63058'>- Remove TODO from DOCSnemysis2014-04-022-1/+14 * Fix plistantoine2014-04-021-1/+2 * Do not violate stagedirantoine2014-04-021-1/+1 * - Update to 5.0.1acm2014-03-262-4/+3 * - Update to 0.16.16, Announce message:nemysis2014-03-252-7/+10 * Improve the workaround for FreeBSD >= 10 to actually use the base clang.marius2014-03-249-10/+623 * Mark as broken ports that expect wx 2.9+ but does not build with 3.0 (2.9 is ...bapt2014-03-241-0/+2 * Switch to wx 3.0bapt2014-03-241-2/+2 * - Update to version 5.3.0.0pawel2014-03-202-6/+7 * Support staging and update MASTER_SITES, use GOOGLE_CODE, other site disappearedehaupt2014-03-182-9/+7 * - Convert USE_GMAKE/BZIP2 to USESmiwi2014-03-169-17/+10 * Update cpuminer to 2.3.3mm2014-03-153-15/+3 * - Support stagingehaupt2014-03-141-10/+9 * - Update to 0.4.2swills2014-03-135-89/+128 * - Update to 3.1.9, Announce message:nemysis2014-03-133-48/+9 * Deprecate a few old unmaintained portsantoine2014-03-121-0/+2 * Chase libtorrent-devel bumpantoine2014-03-121-2/+2 * Chase libtorrent bumpantoine2014-03-121-2/+2 * Update the default version of GCC used in the Ports Collection fromgerald2014-03-1111-11/+11 * Convert n* to USES=zipbapt2014-03-118-13/+9 * - Change net-p2p/i2p primary category to security. Therefore, movelioux2014-03-086-289/+0 * Unlink net-p2p/i2p before moving it from net-p2p/i2p to security/i2p.lioux2014-03-081-1/+0 * - Do not build local libbzip2.a, link to the one from the basedanfe2014-03-074-8/+76 * Resurrect net-p2p/microdc2 and unbreak the build: in the configure script,danfe2014-03-077-0/+66 * Add staging supportpawel2014-03-041-3/+2 * Replace USE_GCC=4.2+ by USE_GCC=any. [1]gerald2014-03-022-2/+2 * Remove expired ports:rene2014-02-288-90/+0 * - Stage supportantoine2014-02-252-31/+23 * drop maintainership. I don't have time for these ports.az2014-02-244-4/+4 * - Update to version 1.19pawel2014-02-232-3/+10 * - Stage supportmiwi2014-02-211-2/+1 * Remove trailing whitespaces from category net-p2pehaupt2014-02-215-5/+5 * Fix CPU affinity of net-p2p/cpuminer port threadsmm2014-02-192-1/+12 * - Bump PORTREVISION after KDE4_PREFIX changemakc2014-02-182-2/+2 * - Update to 0.16.15nemysis2014-02-164-25/+3 * - Reassign lioux' ports to the heaptabthorpe2014-02-152-2/+2 * - STAGE-cleangahr2014-02-142-6/+6 * - Update to 0.16.14nemysis2014-02-144-11/+29 * - Convert USE_SCONS to USESmiwi2014-02-131-18/+17 * Namecoin is an open source decentralized key/value registration and transferswills2014-02-1310-0/+272 * - Fix build after boost updateswills2014-02-134-52/+58 * - Stage supportmiwi2014-02-121-2/+1 * - Stage supportmiwi2014-02-121-2/+1 * - Convert to USESmiwi2014-02-121-2/+1 * - Stage supportmiwi2014-02-121-4/+0 * - Stage supportmiwi2014-02-122-2/+0 * - Stage supportmiwi2014-02-121-1/+0 * - Stage supportmiwi2014-02-121-2/+1 * - Stage supportmiwi2014-02-121-1/+0 * According to the Porter's Handbook (5.12.2.3.) default options must be added toehaupt2014-02-105-0/+14 * - Update to 0.8.6.2swills2014-02-107-68/+74 * net-p2p/dogecoin: Fix DragonFly (broken by OSVERSION)marino2014-02-101-1/+1 * - do not use easy_install, convert to auto-generated packing listrm2014-02-102-52/+7 * net-p2p/litecoin: Fix DragonFly (broken by OSVERSION)marino2014-02-101-1/+1 * Fix plistantoine2014-02-091-5/+6 * - Fix after change to options in masterswills2014-02-081-1/+1 * - Fix buildmiwi2014-02-072-49/+26 * Chase boost and icu bumpbapt2014-02-079-5/+9 * - Add patch, fix build net-p2p/qbittorrent-nox11nemysis2014-02-072-2/+44 * - Use more correct OSVERSION check [1]swills2014-02-071-10/+9 * - Stage supportmiwi2014-02-061-11/+8 * - Stage supportmiwi2014-02-061-4/+3 * net-p2p/gkremldk: Fix for new linkers (-Wl must have an argument)marino2014-02-061-0/+11 * - Update to 3.1.8, BUGFIX: Really fix build of v3.1.6nemysis2014-02-042-3/+3 * net-p2p/libtorrent-rasterbarnemysis2014-02-043-6/+21 * - Update to 1.5.0swills2014-02-026-44/+79 * Mark broken: Fails to buildantoine2014-02-011-0/+2 * - Update to 3.1.5nemysis2014-02-012-3/+4 * - add stage supportaz2014-01-308-12/+5 * Deprecate ports broken for more than 6 monthbapt2014-01-281-0/+2 * - Use USES=compiler:c++11-lang instead of compiler:c++11-libnemysis2014-01-221-1/+1 * Fix properties on pkg-plistbapt2014-01-221-1/+0 * Digitalcoin is an open source digital currency, originally based on Bitcoin,swills2014-01-197-0/+104 * - Add patch to prevent 100% CPU at idleswills2014-01-192-1/+12 * Zetacoin is a free open source peer-to-peer electronic cash system thatswills2014-01-1813-0/+319 * - Update to 1.0.1miwi2014-01-175-62/+51 * - Support stage dirswills2014-01-172-3/+21 * - Support stage dirswills2014-01-172-9/+18 * - Switch to USES=gmakeswills2014-01-171-2/+2 * - Update to 1.4swills2014-01-162-5/+5 * - Fix build at 11.x [1]nemysis2014-01-151-4/+5 * Python cleanup:rene2014-01-142-2/+2 * - Support STAGEDIRbar2014-01-124-90/+145 * - Support STAGEDIRbar2014-01-123-84/+129 * Convert the tree to USES=famantoine2014-01-051-2/+1 * Add option to disable ownership and permissions checking in rc script.crees2014-01-042-6/+12 * - Bump PORTREVISIONnemysis2014-01-031-3/+3 * Fix stagecrees2014-01-021-1/+2 * Slave port of net-p2p/litecoin so as to allow litecoin-qt and litecoind toswills2014-01-022-0/+10 * Slave port of net-p2p/bitcoin so as to allow bitcoin-qt and bitcoind to easilyswills2014-01-022-0/+10 * - Update to 1.3 [1]swills2014-01-023-5/+17 * - Bump PORTREVISIONnemysis2013-12-312-2/+3 * - rename AL2 to APACHE20 in Mk/bsd.licenses.db.mkohauer2013-12-311-1/+1 * - Unbreak net-p2p/libtorrent-rasterbar to fix install of net-p2p/delugenemysis2013-12-301-0/+2 * - Update to 3.1.4nemysis2013-12-302-8/+13 * - Update to 0.16.13nemysis2013-12-302-5/+3 * Stage transmission ports and the rest maintained by me.crees2013-12-3010-35/+23 * net-p2p/py-vertex: support stagingwg2013-12-282-184/+1 * - Fix build with clangpawel2013-12-273-35/+30 * - support STAGEjadawin2013-12-271-9/+4 * Dogecoin is an open source peer-to-peer cryptocurrency, favored by Shiba Inusswills2013-12-206-0/+135 * - Update to 0.8.6.1swills2013-12-174-27/+56 * - Update to 0.8.6swills2013-12-173-16/+4 * Drop maintainershipbapt2013-12-171-1/+1 * Remove expired port:rene2013-12-165-276/+0 * Remove expired ports:rene2013-12-153-45/+0 * - Try fix under fbsd > 10az2013-12-151-0/+10 * Update to version 5.2.0.0pawel2013-12-152-3/+3 * Convert LIB_DEPENDS for ports depending on boostbapt2013-12-122-6/+6 * Convert LIB_DEPENDS for ports depending on boostbapt2013-12-124-8/+8 * New USES=twisted, to replace the old USE_TWISTED knob.mva2013-12-082-3/+2 * Add bitmessage 0.4.1, secure P2P communications client.feld2013-12-076-0/+272 * Mark as broken: fails to linkbapt2013-12-061-0/+2 * Mark as broken on i386 tooantoine2013-12-021-2/+0 * Try to unbreak for freebsd > 10.xaz2013-11-242-1/+12 * - Update to 3.1.3nemysis2013-11-233-4/+3 * - Pass QMAKE_ARGS to qmakemakc2013-11-223-6/+6 * - Convert to USES=qmake (and other USES while I'm here)makc2013-11-221-6/+2 * - Convert to dos2unix.mkmat2013-11-202-3/+3 * Remove expired ports:rene2013-11-186-57/+0 * Unbreak net-p2p/libtorrent-rasterbar-python to fix installrm2013-11-161-0/+2 * - Fix build on 10.0swills2013-11-161-0/+22 * Fix -qt4 build on 10.0-BETA3crees2013-11-142-2/+12 * - Update to 1.18.1sunpoet2013-11-112-5/+4 * Depend on gcc 4.6+ to get substantially higher hashrates on modern CPUsmm2013-11-081-8/+4 * net-p2p/retroshare: update to 0.5.5awg2013-11-068-140/+80 * net-p2p/qbittorrentnemysis2013-11-065-50/+32 * - Fix net-p2p/libtorrent-rasterbar dependency due to recent commitnemysis2013-11-062-3/+3 * - Copy libtorrent-rasterbar from libtorrent-rasterbar-16@r332964bdrewery2013-11-065-0/+237 * - Remove libtorrent-rasterbar to fix copy from libtorrent-rasterbar-16bdrewery2013-11-065-237/+0 * net-p2p/libtorrent-rasterbarnemysis2013-11-067-25/+27 * Simplify port and use SF for DISTFILESmm2013-11-063-14/+10 * Support STAGEDIR.vanilla2013-11-054-19/+15 * cpuminer is a simple daemon that performs Bitcoin or Litecoinmm2013-11-045-0/+49 * put hack for freebsd 10.x under OPSYS, this will unbreak build under dbsd portsaz2013-11-041-1/+1 * - Try to fix build on 10.x and fix segfault while running rtorrentaz2013-11-023-1/+22 * - Reassign to the heap at maintainers requesttabthorpe2013-11-021-1/+1 * The word 'very' has no place in COMMENTeadler2013-10-311-1/+1 * - use STAGEDIRdinoex2013-10-291-6/+5 * - use STAGEDIRdinoex2013-10-281-6/+11 * Update to libmpc version 1.0.1 which brings the following fixes:gerald2013-10-267-6/+7 * - Fix build on FreeBSD 10 (iconv, libc++).tijl2013-10-253-8/+115 * Support staging.ehaupt2013-10-241-2/+1 * - Support stagingmakc2013-10-232-9/+7