mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-15 12:50:47 +02:00
Try changing peer primary key to hash, not done (#782)
* Try changing peer primary key to hash, not done * Got backend working with peer hash as primary key * Got frontend working with peer hash as primary key for peer
This commit is contained in:
parent
ebd61823aa
commit
64cf97dfe9
25 changed files with 322 additions and 202 deletions
|
|
@ -40,12 +40,12 @@ export default function BuyOfferDetailItem({
|
|||
|
||||
const onPeerClick = (event) => {
|
||||
event.preventDefault();
|
||||
const peerId = getPeerId();
|
||||
if (peerId == null) {
|
||||
const peerHash = getPeerHash();
|
||||
if (peerHash == null) {
|
||||
return;
|
||||
}
|
||||
console.log("Handling peer click for peerId: " + peerId);
|
||||
goToPeerPage(history, peerId);
|
||||
console.log("Handling peer click for peerHash: " + peerHash);
|
||||
goToPeerPage(history, peerHash);
|
||||
}
|
||||
|
||||
const onLightningNodeClick = (event) => {
|
||||
|
|
@ -58,12 +58,12 @@ export default function BuyOfferDetailItem({
|
|||
)
|
||||
}
|
||||
|
||||
const getPeerId = () => {
|
||||
const getPeerHash = () => {
|
||||
if (!offer.getHasPeer()) {
|
||||
return null;
|
||||
}
|
||||
const peer = offer.getPeer();
|
||||
return peer.getPeerId();
|
||||
return peer.getPeerHash();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -96,9 +96,9 @@ export default function BuyOfferDetailItem({
|
|||
}
|
||||
|
||||
function HasPeerDisplay(peer) {
|
||||
const peerId = peer.getPeerId();
|
||||
const peerHash = peer.getPeerHash();
|
||||
const peerName = peer.getPeerName();
|
||||
const peerDisplayName = peerName ? peerName : peerId;
|
||||
const peerDisplayName = peerName ? peerName : peerHash;
|
||||
return (
|
||||
<Link href="#"
|
||||
onClick={onPeerClick}
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ export default function CreatePeerDialog({
|
|||
|
||||
const createPeer = (peerName, host, port) => {
|
||||
createPeerRequest(peerName, host, port, (response) => {
|
||||
goToPeerPage(history, response.getPeerId());
|
||||
goToPeerPage(history, response.getPeerHash());
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -45,8 +45,8 @@ export default function DeletePeerDialog({
|
|||
var classes = useStyles();
|
||||
const history = useHistory();
|
||||
|
||||
const deletePeer = (peerId) => {
|
||||
deletePeerRequest(peerId, (response) => {
|
||||
const deletePeer = (peerHash) => {
|
||||
deletePeerRequest(peerHash, (response) => {
|
||||
reloadRoute(history);
|
||||
});
|
||||
};
|
||||
|
|
@ -54,9 +54,9 @@ export default function DeletePeerDialog({
|
|||
function handleSubmit(event) {
|
||||
event.preventDefault();
|
||||
console.log( 'peer:', peer);
|
||||
var peerId = peer.getPeerId();
|
||||
console.log( 'peerId:', peerId);
|
||||
deletePeer(peerId);
|
||||
var peerHash = peer.getPeerHash();
|
||||
console.log( 'peerHash:', peerHash);
|
||||
deletePeer(peerHash);
|
||||
handleClose();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ function Layout(props) {
|
|||
<Route path="/app/lightningnode/:pubkey" component={LightningNode} />
|
||||
<Route path="/app/channel/:txId/:outputIndex" component={Channel} />
|
||||
<Route path="/app/peers" component={Peers} />
|
||||
<Route path="/app/peer/:id" component={Peer} />
|
||||
<Route path="/app/peer/:hash" component={Peer} />
|
||||
<Route path="/app/notifications" component={Notifications} />
|
||||
<Route
|
||||
exact
|
||||
|
|
|
|||
|
|
@ -47,12 +47,12 @@ export default function SentPayment({
|
|||
|
||||
const onPeerClick = (event) => {
|
||||
event.preventDefault();
|
||||
const peerId = getPeerId();
|
||||
if (peerId == null) {
|
||||
const peerHash = getPeerHash();
|
||||
if (peerHash == null) {
|
||||
return;
|
||||
}
|
||||
console.log("Handling peer click for peerId: " + peerId);
|
||||
goToPeerPage(history, peerId);
|
||||
console.log("Handling peer click for peerHash: " + peerHash);
|
||||
goToPeerPage(history, peerHash);
|
||||
}
|
||||
|
||||
const onLightningNodeClick = (event) => {
|
||||
|
|
@ -62,12 +62,12 @@ export default function SentPayment({
|
|||
goToLightningNodePage(history, nodePubkey);
|
||||
}
|
||||
|
||||
const getPeerId = () => {
|
||||
const getPeerHash = () => {
|
||||
if (!sentPayment.getHasPeer()) {
|
||||
return null;
|
||||
}
|
||||
const peer = sentPayment.getPeer();
|
||||
return peer.getPeerId();
|
||||
return peer.getPeerHash();
|
||||
}
|
||||
|
||||
const getPeerDisplay = () => {
|
||||
|
|
@ -76,8 +76,8 @@ export default function SentPayment({
|
|||
}
|
||||
const peer = sentPayment.getPeer();
|
||||
const peerName = peer.getPeerName();
|
||||
const peerId = peer.getPeerId();
|
||||
return peerName ? peerName : peerId;
|
||||
const peerHash = peer.getPeerHash();
|
||||
return peerName ? peerName : peerHash;
|
||||
}
|
||||
|
||||
function PeerDisplay() {
|
||||
|
|
@ -89,9 +89,9 @@ export default function SentPayment({
|
|||
}
|
||||
|
||||
function HasPeerDisplay(peer) {
|
||||
const peerId = peer.getPeerId();
|
||||
const peerHash = peer.getPeerHash();
|
||||
const peerName = peer.getPeerName();
|
||||
const peerDisplayName = peerName ? peerName : peerId;
|
||||
const peerDisplayName = peerName ? peerName : peerHash;
|
||||
return (
|
||||
<Link href="#"
|
||||
onClick={onPeerClick}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ export const reloadRoute = (history) => {
|
|||
history.go(0);
|
||||
};
|
||||
|
||||
export const goToPeerPage = (history, peerId) => {
|
||||
history.push("/app/peer/" + peerId);
|
||||
export const goToPeerPage = (history, peerHash) => {
|
||||
history.push("/app/peer/" + peerHash);
|
||||
};
|
||||
|
||||
export const goToLightningNodePage = (history, pubkey, host, port) => {
|
||||
|
|
|
|||
|
|
@ -29,27 +29,27 @@ import {
|
|||
|
||||
export default function PeerPage() {
|
||||
var classes = useStyles();
|
||||
const { id } = useParams();
|
||||
const { hash } = useParams();
|
||||
const [peer, setPeer] = useState(null);
|
||||
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
||||
|
||||
const getSqueakPeer = (id) => {
|
||||
getPeerRequest(id, setPeer);
|
||||
const getSqueakPeer = (hash) => {
|
||||
getPeerRequest(hash, setPeer);
|
||||
};
|
||||
const setDownloading = (id, downloading) => {
|
||||
setPeerDownloadingRequest(id, downloading, () => {
|
||||
getSqueakPeer(id);
|
||||
const setDownloading = (hash, downloading) => {
|
||||
setPeerDownloadingRequest(hash, downloading, () => {
|
||||
getSqueakPeer(hash);
|
||||
});
|
||||
};
|
||||
const setUploading = (id, uploading) => {
|
||||
setPeerUploadingRequest(id, uploading, () => {
|
||||
getSqueakPeer(id);
|
||||
const setUploading = (hash, uploading) => {
|
||||
setPeerUploadingRequest(hash, uploading, () => {
|
||||
getSqueakPeer(hash);
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(()=>{
|
||||
getSqueakPeer(id)
|
||||
},[id]);
|
||||
getSqueakPeer(hash)
|
||||
},[hash]);
|
||||
|
||||
const handleClickOpenDeleteDialog = () => {
|
||||
setDeleteDialogOpen(true);
|
||||
|
|
@ -61,15 +61,15 @@ export default function PeerPage() {
|
|||
};
|
||||
|
||||
const handleSettingsDownloadingChange = (event) => {
|
||||
console.log("Downloading changed for peer id: " + id);
|
||||
console.log("Downloading changed for peer hash: " + hash);
|
||||
console.log("Downloading changed to: " + event.target.checked);
|
||||
setDownloading(id, event.target.checked);
|
||||
setDownloading(hash, event.target.checked);
|
||||
};
|
||||
|
||||
const handleSettingsUploadingChange = (event) => {
|
||||
console.log("Uploading changed for peer id: " + id);
|
||||
console.log("Uploading changed for peer hash: " + hash);
|
||||
console.log("Uploading changed to: " + event.target.checked);
|
||||
setUploading(id, event.target.checked);
|
||||
setUploading(hash, event.target.checked);
|
||||
};
|
||||
|
||||
function NoPeerContent() {
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ export default function Peers() {
|
|||
title="Peers"
|
||||
data={peers.map(s =>
|
||||
[
|
||||
s.getPeerId(),
|
||||
s.getPeerHash(),
|
||||
s.getPeerName(),
|
||||
s.getHost(),
|
||||
s.getPort(),
|
||||
|
|
|
|||
|
|
@ -412,9 +412,9 @@ export function getBuyOfferRequest(offerId, handleResponse) {
|
|||
);
|
||||
}
|
||||
|
||||
export function getPeerRequest(id, handleResponse) {
|
||||
export function getPeerRequest(peerHash, handleResponse) {
|
||||
var request = new GetPeerRequest();
|
||||
request.setPeerId(id);
|
||||
request.setPeerHash(peerHash);
|
||||
makeRequest(
|
||||
'getpeer',
|
||||
request,
|
||||
|
|
@ -425,9 +425,9 @@ export function getPeerRequest(id, handleResponse) {
|
|||
);
|
||||
}
|
||||
|
||||
export function setPeerDownloadingRequest(id, downloading, handleResponse) {
|
||||
export function setPeerDownloadingRequest(peerHash, downloading, handleResponse) {
|
||||
var request = new SetPeerDownloadingRequest();
|
||||
request.setPeerId(id);
|
||||
request.setPeerHash(peerHash);
|
||||
request.setDownloading(downloading);
|
||||
makeRequest(
|
||||
'setpeerdownloading',
|
||||
|
|
@ -437,9 +437,9 @@ export function setPeerDownloadingRequest(id, downloading, handleResponse) {
|
|||
);
|
||||
}
|
||||
|
||||
export function setPeerUploadingRequest(id, uploading, handleResponse) {
|
||||
export function setPeerUploadingRequest(peerHash, uploading, handleResponse) {
|
||||
var request = new SetPeerUploadingRequest();
|
||||
request.setPeerId(id);
|
||||
request.setPeerHash(peerHash);
|
||||
request.setUploading(uploading);
|
||||
makeRequest(
|
||||
'setpeeruploading',
|
||||
|
|
@ -590,9 +590,9 @@ export function createPeerRequest(peerName, host, port, handleResponse) {
|
|||
);
|
||||
}
|
||||
|
||||
export function deletePeerRequest(peerId, handleResponse) {
|
||||
export function deletePeerRequest(peerHash, handleResponse) {
|
||||
var request = new DeletePeerRequest();
|
||||
request.setPeerId(peerId);
|
||||
request.setPeerHash(peerHash);
|
||||
makeRequest(
|
||||
'deletepeer',
|
||||
request,
|
||||
|
|
|
|||
|
|
@ -130,17 +130,49 @@ def saved_squeak_hash(server_stub, admin_stub, signing_profile_address):
|
|||
|
||||
|
||||
@pytest.fixture
|
||||
def peer_id(server_stub, admin_stub):
|
||||
def random_peer_host():
|
||||
yield "random_host_name_{}".format(uuid.uuid1())
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def random_peer_hash(server_stub, admin_stub, random_peer_host):
|
||||
# Create a new peer
|
||||
create_peer_response = admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name="fake_peer_name",
|
||||
host="fake_host",
|
||||
peer_name=random_peer_host,
|
||||
host=random_peer_host,
|
||||
port=1234,
|
||||
)
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
yield peer_id
|
||||
peer_hash = create_peer_response.peer_hash
|
||||
yield peer_hash
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def connected_peer_hash(other_admin_stub, admin_stub):
|
||||
# Add the main node as a peer
|
||||
create_peer_response = other_admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name="test_peer",
|
||||
host="squeaknode",
|
||||
port=8774,
|
||||
)
|
||||
)
|
||||
peer_hash = create_peer_response.peer_hash
|
||||
# Set the peer to be downloading
|
||||
other_admin_stub.SetPeerDownloading(
|
||||
squeak_admin_pb2.SetPeerDownloadingRequest(
|
||||
peer_hash=peer_hash,
|
||||
downloading=True,
|
||||
)
|
||||
)
|
||||
yield peer_hash
|
||||
# Delete the peer
|
||||
other_admin_stub.DeletePeer(
|
||||
squeak_admin_pb2.DeletePeerRequest(
|
||||
peer_hash=peer_hash,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
|
|
|||
|
|
@ -713,12 +713,12 @@ def test_create_peer(server_stub, admin_stub):
|
|||
port=1234,
|
||||
)
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
peer_hash = create_peer_response.peer_hash
|
||||
|
||||
# Get the new peer
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=peer_hash,
|
||||
)
|
||||
)
|
||||
assert get_peer_response.squeak_peer.host == "fake_host"
|
||||
|
|
@ -745,11 +745,11 @@ def test_create_peer_empty_name(server_stub, admin_stub):
|
|||
assert "Peer name cannot be empty." in str(excinfo.value)
|
||||
|
||||
|
||||
def test_set_peer_downloading(server_stub, admin_stub, peer_id):
|
||||
def test_set_peer_downloading(server_stub, admin_stub, random_peer_hash):
|
||||
# Get the peer
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
assert not get_peer_response.squeak_peer.downloading
|
||||
|
|
@ -757,7 +757,7 @@ def test_set_peer_downloading(server_stub, admin_stub, peer_id):
|
|||
# Set the peer to be downloading
|
||||
admin_stub.SetPeerDownloading(
|
||||
squeak_admin_pb2.SetPeerDownloadingRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
downloading=True,
|
||||
)
|
||||
)
|
||||
|
|
@ -765,17 +765,17 @@ def test_set_peer_downloading(server_stub, admin_stub, peer_id):
|
|||
# Get the peer again
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
assert get_peer_response.squeak_peer.downloading
|
||||
|
||||
|
||||
def test_set_peer_uploading(server_stub, admin_stub, peer_id):
|
||||
def test_set_peer_uploading(server_stub, admin_stub, random_peer_hash):
|
||||
# Get the peer
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
assert not get_peer_response.squeak_peer.uploading
|
||||
|
|
@ -783,7 +783,7 @@ def test_set_peer_uploading(server_stub, admin_stub, peer_id):
|
|||
# Set the peer to be uploading
|
||||
admin_stub.SetPeerUploading(
|
||||
squeak_admin_pb2.SetPeerUploadingRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
uploading=True,
|
||||
)
|
||||
)
|
||||
|
|
@ -791,17 +791,17 @@ def test_set_peer_uploading(server_stub, admin_stub, peer_id):
|
|||
# Get the peer again
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
assert get_peer_response.squeak_peer.uploading
|
||||
|
||||
|
||||
def test_rename_peer(server_stub, admin_stub, peer_id, random_name):
|
||||
def test_rename_peer(server_stub, admin_stub, random_peer_hash, random_name):
|
||||
# Rename the peer
|
||||
admin_stub.RenamePeer(
|
||||
squeak_admin_pb2.RenamePeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
peer_name=random_name,
|
||||
)
|
||||
)
|
||||
|
|
@ -809,17 +809,17 @@ def test_rename_peer(server_stub, admin_stub, peer_id, random_name):
|
|||
# Get the peer again
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
assert get_peer_response.squeak_peer.peer_name == random_name
|
||||
|
||||
|
||||
def test_delete_peer(server_stub, admin_stub, peer_id):
|
||||
def test_delete_peer(server_stub, admin_stub, random_peer_hash):
|
||||
# Delete the peer
|
||||
admin_stub.DeletePeer(
|
||||
squeak_admin_pb2.DeletePeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -827,7 +827,7 @@ def test_delete_peer(server_stub, admin_stub, peer_id):
|
|||
with pytest.raises(Exception) as excinfo:
|
||||
admin_stub.GetPeer(
|
||||
squeak_admin_pb2.GetPeerRequest(
|
||||
peer_id=peer_id,
|
||||
peer_hash=random_peer_hash,
|
||||
)
|
||||
)
|
||||
assert "Peer not found." in str(excinfo.value)
|
||||
|
|
@ -1025,6 +1025,7 @@ def test_connect_other_node(
|
|||
admin_stub,
|
||||
other_server_stub,
|
||||
other_admin_stub,
|
||||
connected_peer_hash,
|
||||
lightning_client,
|
||||
signing_profile_address,
|
||||
saved_squeak_hash,
|
||||
|
|
@ -1035,24 +1036,6 @@ def test_connect_other_node(
|
|||
)
|
||||
assert len(get_timeline_squeak_display_response.squeak_display_entries) == 0
|
||||
|
||||
# Add the main node as a peer
|
||||
create_peer_response = other_admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name="test_peer",
|
||||
host="squeaknode",
|
||||
port=8774,
|
||||
)
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
|
||||
# Set the peer to be downloading
|
||||
other_admin_stub.SetPeerDownloading(
|
||||
squeak_admin_pb2.SetPeerDownloadingRequest(
|
||||
peer_id=peer_id,
|
||||
downloading=True,
|
||||
)
|
||||
)
|
||||
|
||||
# Get the squeak profile
|
||||
get_squeak_profile_response = admin_stub.GetSqueakProfile(
|
||||
squeak_admin_pb2.GetSqueakProfileRequest(
|
||||
|
|
@ -1096,7 +1079,7 @@ def test_connect_other_node(
|
|||
)
|
||||
time.sleep(5)
|
||||
# print(sync_squeaks_response)
|
||||
# assert peer_id in sync_squeaks_response.sync_result.completed_peer_ids
|
||||
# assert peer_hash in sync_squeaks_response.sync_result.completed_peer_hashs
|
||||
|
||||
# Get the sent offers from the seller node
|
||||
get_sent_offers_response = admin_stub.GetSentOffers(
|
||||
|
|
@ -1232,29 +1215,12 @@ def test_download_single_squeak(
|
|||
admin_stub,
|
||||
other_server_stub,
|
||||
other_admin_stub,
|
||||
connected_peer_hash,
|
||||
lightning_client,
|
||||
signing_profile_address,
|
||||
saved_squeak_hash,
|
||||
):
|
||||
|
||||
# Add the main node as a peer
|
||||
create_peer_response = other_admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name="test_peer",
|
||||
host="squeaknode",
|
||||
port=8774,
|
||||
)
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
|
||||
# Set the peer to be downloading
|
||||
other_admin_stub.SetPeerDownloading(
|
||||
squeak_admin_pb2.SetPeerDownloadingRequest(
|
||||
peer_id=peer_id,
|
||||
downloading=True,
|
||||
)
|
||||
)
|
||||
|
||||
# Get the squeak profile
|
||||
get_squeak_profile_response = admin_stub.GetSqueakProfile(
|
||||
squeak_admin_pb2.GetSqueakProfileRequest(
|
||||
|
|
@ -1316,7 +1282,7 @@ def test_download_single_squeak(
|
|||
)
|
||||
time.sleep(10)
|
||||
print(sync_squeak_response)
|
||||
# assert peer_id in sync_squeak_response.sync_result.completed_peer_ids
|
||||
# assert peer_hash in sync_squeak_response.sync_result.completed_peer_hashs
|
||||
|
||||
# Get the squeak display item
|
||||
get_squeak_display_response = other_admin_stub.GetSqueakDisplay(
|
||||
|
|
|
|||
|
|
@ -514,13 +514,13 @@ message CreatePeerRequest {
|
|||
}
|
||||
|
||||
message CreatePeerReply {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
}
|
||||
|
||||
message GetPeerRequest {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
}
|
||||
|
||||
message GetPeerReply {
|
||||
|
|
@ -537,8 +537,8 @@ message GetPeersReply {
|
|||
}
|
||||
|
||||
message SqueakPeer {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
|
||||
/// The peer name
|
||||
string peer_name = 2;
|
||||
|
|
@ -557,8 +557,8 @@ message SqueakPeer {
|
|||
}
|
||||
|
||||
message SetPeerDownloadingRequest {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
|
||||
/// Downloading
|
||||
bool downloading = 2;
|
||||
|
|
@ -568,8 +568,8 @@ message SetPeerDownloadingReply {
|
|||
}
|
||||
|
||||
message SetPeerUploadingRequest {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
|
||||
/// Uploading
|
||||
bool uploading = 2;
|
||||
|
|
@ -579,8 +579,8 @@ message SetPeerUploadingReply {
|
|||
}
|
||||
|
||||
message RenamePeerRequest {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
|
||||
/// Name of the peer
|
||||
string peer_name = 2;
|
||||
|
|
@ -590,8 +590,8 @@ message RenamePeerReply {
|
|||
}
|
||||
|
||||
message DeletePeerRequest {
|
||||
/// The peer id
|
||||
int32 peer_id = 1;
|
||||
/// The peer hash
|
||||
string peer_hash = 1;
|
||||
}
|
||||
|
||||
message DeletePeerReply {
|
||||
|
|
@ -700,7 +700,7 @@ message SentPayment {
|
|||
/// Has peer
|
||||
bool has_peer = 2;
|
||||
|
||||
/// The peer id
|
||||
/// The peer hash
|
||||
SqueakPeer peer = 3;
|
||||
|
||||
/// The squeak hash
|
||||
|
|
|
|||
|
|
@ -68,10 +68,8 @@ def squeak_profile_to_message(squeak_profile: SqueakProfile) -> squeak_admin_pb2
|
|||
|
||||
|
||||
def squeak_peer_to_message(squeak_peer: SqueakPeer) -> squeak_admin_pb2.SqueakPeer:
|
||||
if squeak_peer.peer_id is None:
|
||||
raise Exception("Peer id cannot be None.")
|
||||
return squeak_admin_pb2.SqueakPeer(
|
||||
peer_id=squeak_peer.peer_id,
|
||||
peer_hash=squeak_peer.peer_hash.hex(),
|
||||
peer_name=squeak_peer.peer_name,
|
||||
host=squeak_peer.host,
|
||||
port=squeak_peer.port,
|
||||
|
|
|
|||
|
|
@ -387,19 +387,21 @@ class SqueakAdminServerHandler(object):
|
|||
port,
|
||||
)
|
||||
)
|
||||
peer_id = self.squeak_controller.create_peer(
|
||||
peer_hash = self.squeak_controller.create_peer(
|
||||
peer_name,
|
||||
host,
|
||||
port,
|
||||
)
|
||||
return squeak_admin_pb2.CreatePeerReply(
|
||||
peer_id=peer_id,
|
||||
peer_hash=peer_hash.hex(),
|
||||
)
|
||||
|
||||
def handle_get_squeak_peer(self, request):
|
||||
peer_id = request.peer_id
|
||||
logger.info("Handle get squeak peer with id: {}".format(peer_id))
|
||||
squeak_peer = self.squeak_controller.get_peer(peer_id)
|
||||
peer_hash_str = request.peer_hash
|
||||
peer_hash = bytes.fromhex(peer_hash_str)
|
||||
logger.info(
|
||||
"Handle get squeak peer with hash: {}".format(peer_hash_str))
|
||||
squeak_peer = self.squeak_controller.get_peer(peer_hash)
|
||||
if squeak_peer is None:
|
||||
raise Exception("Peer not found.")
|
||||
squeak_peer_msg = squeak_peer_to_message(squeak_peer)
|
||||
|
|
@ -418,45 +420,50 @@ class SqueakAdminServerHandler(object):
|
|||
)
|
||||
|
||||
def handle_set_squeak_peer_downloading(self, request):
|
||||
peer_id = request.peer_id
|
||||
peer_hash_str = request.peer_hash
|
||||
peer_hash = bytes.fromhex(peer_hash_str)
|
||||
downloading = request.downloading
|
||||
logger.info(
|
||||
"Handle set peer downloading with peer id: {}, downloading: {}".format(
|
||||
peer_id,
|
||||
peer_hash,
|
||||
downloading,
|
||||
)
|
||||
)
|
||||
self.squeak_controller.set_peer_downloading(peer_id, downloading)
|
||||
self.squeak_controller.set_peer_downloading(peer_hash, downloading)
|
||||
return squeak_admin_pb2.SetPeerDownloadingReply()
|
||||
|
||||
def handle_rename_squeak_peer(self, request):
|
||||
peer_id = request.peer_id
|
||||
peer_hash_str = request.peer_hash
|
||||
peer_hash = bytes.fromhex(peer_hash_str)
|
||||
peer_name = request.peer_name
|
||||
logger.info(
|
||||
"Handle rename peer with peer id: {}, new name: {}".format(
|
||||
peer_id,
|
||||
peer_hash_str,
|
||||
peer_name,
|
||||
)
|
||||
)
|
||||
self.squeak_controller.rename_peer(peer_id, peer_name)
|
||||
self.squeak_controller.rename_peer(peer_hash, peer_name)
|
||||
return squeak_admin_pb2.RenamePeerReply()
|
||||
|
||||
def handle_set_squeak_peer_uploading(self, request):
|
||||
peer_id = request.peer_id
|
||||
peer_hash_str = request.peer_hash
|
||||
peer_hash = bytes.fromhex(peer_hash_str)
|
||||
uploading = request.uploading
|
||||
logger.info(
|
||||
"Handle set peer uploading with peer id: {}, uploading: {}".format(
|
||||
peer_id,
|
||||
peer_hash,
|
||||
uploading,
|
||||
)
|
||||
)
|
||||
self.squeak_controller.set_peer_uploading(peer_id, uploading)
|
||||
self.squeak_controller.set_peer_uploading(peer_hash, uploading)
|
||||
return squeak_admin_pb2.SetPeerUploadingReply()
|
||||
|
||||
def handle_delete_squeak_peer(self, request):
|
||||
peer_id = request.peer_id
|
||||
logger.info("Handle delete squeak peer with id: {}".format(peer_id))
|
||||
self.squeak_controller.delete_peer(peer_id)
|
||||
peer_hash_str = request.peer_hash
|
||||
peer_hash = bytes.fromhex(peer_hash_str)
|
||||
logger.info(
|
||||
"Handle delete squeak peer with hash: {}".format(peer_hash_str))
|
||||
self.squeak_controller.delete_peer(peer_hash)
|
||||
return squeak_admin_pb2.DeletePeerReply()
|
||||
|
||||
def handle_get_buy_offers(self, request):
|
||||
|
|
|
|||
|
|
@ -16,4 +16,4 @@ class ReceivedOffer(NamedTuple):
|
|||
destination: str
|
||||
node_host: str
|
||||
node_port: int
|
||||
peer_id: int
|
||||
peer_hash: bytes
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ class SentPayment(NamedTuple):
|
|||
"""Represents a payment made by a buyer."""
|
||||
sent_payment_id: Optional[int]
|
||||
created: Optional[datetime]
|
||||
peer_id: int
|
||||
peer_hash: bytes
|
||||
squeak_hash: bytes
|
||||
payment_hash: bytes
|
||||
secret_key: bytes
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ from squeaknode.core.received_offer import ReceivedOffer
|
|||
from squeaknode.core.received_payment_summary import ReceivedPaymentSummary
|
||||
from squeaknode.core.sent_offer import SentOffer
|
||||
from squeaknode.core.sent_payment_summary import SentPaymentSummary
|
||||
from squeaknode.core.squeak_peer import make_squeak_peer
|
||||
from squeaknode.core.squeak_peer import SqueakPeer
|
||||
from squeaknode.core.squeak_profile import SqueakProfile
|
||||
from squeaknode.core.util import get_hash
|
||||
|
|
@ -236,8 +237,7 @@ class SqueakController:
|
|||
"Peer name cannot be empty.",
|
||||
)
|
||||
port = port or self.config.core.default_peer_rpc_port
|
||||
squeak_peer = SqueakPeer(
|
||||
peer_id=None,
|
||||
squeak_peer = make_squeak_peer(
|
||||
peer_name=peer_name,
|
||||
host=host,
|
||||
port=port,
|
||||
|
|
@ -246,8 +246,8 @@ class SqueakController:
|
|||
)
|
||||
return self.squeak_db.insert_peer(squeak_peer)
|
||||
|
||||
def get_peer(self, peer_id: int):
|
||||
return self.squeak_db.get_peer(peer_id)
|
||||
def get_peer(self, peer_hash: bytes):
|
||||
return self.squeak_db.get_peer(peer_hash)
|
||||
|
||||
def get_peers(self):
|
||||
return self.squeak_db.get_peers()
|
||||
|
|
@ -258,17 +258,17 @@ class SqueakController:
|
|||
def get_uploading_peers(self):
|
||||
return self.squeak_db.get_uploading_peers()
|
||||
|
||||
def set_peer_downloading(self, peer_id: int, downloading: bool):
|
||||
self.squeak_db.set_peer_downloading(peer_id, downloading)
|
||||
def set_peer_downloading(self, peer_hash: bytes, downloading: bool):
|
||||
self.squeak_db.set_peer_downloading(peer_hash, downloading)
|
||||
|
||||
def set_peer_uploading(self, peer_id: int, uploading: bool):
|
||||
self.squeak_db.set_peer_uploading(peer_id, uploading)
|
||||
def set_peer_uploading(self, peer_hash: bytes, uploading: bool):
|
||||
self.squeak_db.set_peer_uploading(peer_hash, uploading)
|
||||
|
||||
def rename_peer(self, peer_id: int, peer_name: str):
|
||||
self.squeak_db.set_peer_name(peer_id, peer_name)
|
||||
def rename_peer(self, peer_hash: bytes, peer_name: str):
|
||||
self.squeak_db.set_peer_name(peer_hash, peer_name)
|
||||
|
||||
def delete_peer(self, peer_id: int):
|
||||
self.squeak_db.delete_peer(peer_id)
|
||||
def delete_peer(self, peer_hash: bytes):
|
||||
self.squeak_db.delete_peer(peer_hash)
|
||||
|
||||
def get_buy_offers_with_peer(self, squeak_hash: bytes):
|
||||
return self.squeak_db.get_offers_with_peer(squeak_hash)
|
||||
|
|
@ -422,12 +422,12 @@ class SqueakController:
|
|||
include_locked=True,
|
||||
)
|
||||
|
||||
def lookup_squeaks_needing_offer(self, addresses: List[str], min_block, max_block, peer_id):
|
||||
def lookup_squeaks_needing_offer(self, addresses: List[str], min_block, max_block, peer_hash: bytes):
|
||||
return self.squeak_db.lookup_squeaks_needing_offer(
|
||||
addresses,
|
||||
min_block,
|
||||
max_block,
|
||||
peer_id,
|
||||
peer_hash,
|
||||
)
|
||||
|
||||
def save_offer(self, received_offer: ReceivedOffer):
|
||||
|
|
|
|||
|
|
@ -186,8 +186,6 @@ class SqueakCore:
|
|||
Returns:
|
||||
ReceivedOffer: A record of the details of the offer for the buyer.
|
||||
"""
|
||||
if peer.peer_id is None:
|
||||
raise Exception("Peer must have a non-null peer_id.")
|
||||
# Get the squeak hash
|
||||
squeak_hash = get_hash(squeak)
|
||||
# TODO: check if squeak hash matches squeak_hash in buy_offer.
|
||||
|
|
@ -224,7 +222,7 @@ class SqueakCore:
|
|||
destination=destination,
|
||||
node_host=node_host,
|
||||
node_port=node_port,
|
||||
peer_id=peer.peer_id,
|
||||
peer_hash=peer.peer_hash,
|
||||
)
|
||||
|
||||
def pay_offer(self, received_offer: ReceivedOffer) -> SentPayment:
|
||||
|
|
@ -255,7 +253,7 @@ class SqueakCore:
|
|||
return SentPayment(
|
||||
sent_payment_id=None,
|
||||
created=None,
|
||||
peer_id=received_offer.peer_id,
|
||||
peer_hash=received_offer.peer_hash,
|
||||
squeak_hash=received_offer.squeak_hash,
|
||||
payment_hash=received_offer.payment_hash,
|
||||
secret_key=secret_key,
|
||||
|
|
|
|||
|
|
@ -1,12 +1,30 @@
|
|||
from typing import NamedTuple
|
||||
from typing import Optional
|
||||
|
||||
from squeaknode.core.util import get_peer_hash
|
||||
|
||||
|
||||
class SqueakPeer(NamedTuple):
|
||||
"""Represents another node in the network."""
|
||||
peer_id: Optional[int]
|
||||
peer_hash: bytes
|
||||
peer_name: str
|
||||
host: str
|
||||
port: int
|
||||
uploading: bool
|
||||
downloading: bool
|
||||
|
||||
|
||||
def make_squeak_peer(
|
||||
peer_name: str,
|
||||
host: str,
|
||||
port: int,
|
||||
uploading: bool,
|
||||
downloading: bool,
|
||||
):
|
||||
return SqueakPeer(
|
||||
get_peer_hash(host, port),
|
||||
peer_name,
|
||||
host,
|
||||
port,
|
||||
uploading,
|
||||
downloading,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
from hashlib import sha256
|
||||
|
||||
from bitcoin.base58 import Base58ChecksumError
|
||||
from bitcoin.wallet import CBitcoinAddressError
|
||||
|
|
@ -58,3 +59,8 @@ def is_address_valid(address: str) -> bool:
|
|||
except (Base58ChecksumError, CBitcoinAddressError):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def get_peer_hash(host: str, port: int) -> bytes:
|
||||
host_port_str = "{}:{}".format(host, port)
|
||||
return sha256(host_port_str.encode()).digest()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,87 @@
|
|||
"""Use peer hash for peer primary key
|
||||
|
||||
Revision ID: 9eb4ba6da999
|
||||
Revises: d1cf733279c4
|
||||
Create Date: 2021-02-02 22:14:57.682676
|
||||
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
from sqlalchemy import Integer
|
||||
from sqlalchemy import String
|
||||
from sqlalchemy.sql import column
|
||||
from sqlalchemy.sql import table
|
||||
|
||||
from squeaknode.core.util import get_peer_hash
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '9eb4ba6da999'
|
||||
down_revision = 'd1cf733279c4'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
|
||||
# Create the peer_hash column
|
||||
with op.batch_alter_table('peer', schema=None) as batch_op:
|
||||
batch_op.add_column(
|
||||
sa.Column('peer_hash', sa.String(length=64), nullable=False, server_default=''))
|
||||
with op.batch_alter_table('received_offer', schema=None) as batch_op:
|
||||
batch_op.add_column(
|
||||
sa.Column('peer_hash', sa.String(length=64), nullable=False, server_default=''))
|
||||
with op.batch_alter_table('sent_payment', schema=None) as batch_op:
|
||||
batch_op.add_column(
|
||||
sa.Column('peer_hash', sa.String(length=64), nullable=False, server_default=''))
|
||||
|
||||
peers = table(
|
||||
"peer",
|
||||
column("peer_hash", String(64)),
|
||||
column("server_host", String),
|
||||
column("server_port", Integer),
|
||||
)
|
||||
|
||||
# Set the peer_hash column in the peers table.
|
||||
op.execute(
|
||||
peers.update().
|
||||
values(
|
||||
peer_hash=get_peer_hash(
|
||||
peers.c.server_host,
|
||||
peers.c.server_port,
|
||||
).hex(),
|
||||
)
|
||||
)
|
||||
|
||||
# Delete peer_id and create the primary key on peer_hash
|
||||
with op.batch_alter_table('peer', schema=None) as batch_op:
|
||||
batch_op.drop_column('peer_id')
|
||||
batch_op.create_primary_key(
|
||||
"pk_peer", ["peer_hash"]
|
||||
)
|
||||
with op.batch_alter_table('received_offer', schema=None) as batch_op:
|
||||
batch_op.drop_column('peer_id')
|
||||
with op.batch_alter_table('sent_payment', schema=None) as batch_op:
|
||||
batch_op.drop_column('peer_id')
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('peer', schema=None) as batch_op:
|
||||
batch_op.drop_constraint("pk_peer")
|
||||
batch_op.add_column(sa.Column('peer_id', sa.INTEGER(),
|
||||
nullable=False, server_default='0'))
|
||||
batch_op.drop_column('peer_hash')
|
||||
with op.batch_alter_table('received_offer', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('peer_id', sa.INTEGER(),
|
||||
nullable=False, server_default='0'))
|
||||
batch_op.drop_column('peer_hash')
|
||||
with op.batch_alter_table('sent_payment', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('peer_id', sa.INTEGER(),
|
||||
nullable=False, server_default='0'))
|
||||
batch_op.drop_column('peer_hash')
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
|
@ -71,7 +71,7 @@ class Models:
|
|||
self.peers = Table(
|
||||
"peer",
|
||||
self.metadata,
|
||||
Column("peer_id", Integer, primary_key=True),
|
||||
Column("peer_hash", String(64), primary_key=True),
|
||||
Column("created", TZDateTime,
|
||||
server_default=func.now(), nullable=False),
|
||||
Column("peer_name", String),
|
||||
|
|
@ -98,7 +98,7 @@ class Models:
|
|||
Column("destination", String(66), nullable=False),
|
||||
Column("node_host", String, nullable=False),
|
||||
Column("node_port", Integer, nullable=False),
|
||||
Column("peer_id", Integer, nullable=False),
|
||||
Column("peer_hash", String(64), nullable=False),
|
||||
)
|
||||
|
||||
self.sent_payments = Table(
|
||||
|
|
@ -107,7 +107,7 @@ class Models:
|
|||
Column("sent_payment_id", Integer, primary_key=True),
|
||||
Column("created", TZDateTime,
|
||||
server_default=func.now(), nullable=False),
|
||||
Column("peer_id", Integer, nullable=False),
|
||||
Column("peer_hash", String(64), nullable=False),
|
||||
Column("squeak_hash", String(64), nullable=False),
|
||||
Column("payment_hash", String(64), nullable=False),
|
||||
Column("secret_key", String(64), nullable=False),
|
||||
|
|
|
|||
|
|
@ -395,7 +395,7 @@ class SqueakDb:
|
|||
addresses: List[str],
|
||||
min_block: int,
|
||||
max_block: int,
|
||||
peer_id: int,
|
||||
peer_hash: bytes,
|
||||
include_unverified: bool = False
|
||||
) -> List[bytes]:
|
||||
""" Lookup squeaks that are locked and don't have an offer. """
|
||||
|
|
@ -409,7 +409,7 @@ class SqueakDb:
|
|||
self.received_offers,
|
||||
and_(
|
||||
self.received_offers.c.squeak_hash == self.squeaks.c.hash,
|
||||
self.received_offers.c.peer_id == peer_id,
|
||||
self.received_offers.c.peer_hash == peer_hash.hex(),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
|
@ -435,7 +435,7 @@ class SqueakDb:
|
|||
# SELECT hash FROM squeak
|
||||
# LEFT JOIN offer
|
||||
# ON squeak.hash=offer.squeak_hash
|
||||
# AND offer.peer_id=%s
|
||||
# AND offer.peer_hash=%s
|
||||
# WHERE author_address IN %s
|
||||
# AND n_block_height >= %s
|
||||
# AND n_block_height <= %s
|
||||
|
|
@ -452,7 +452,7 @@ class SqueakDb:
|
|||
# # mogrify to debug.
|
||||
# # logger.info(curs.mogrify(sql, (addresses_tuple, min_block, max_block)))
|
||||
# curs.execute(
|
||||
# sql, (peer_id, addresses_tuple, min_block, max_block, include_unverified)
|
||||
# sql, (peer_hash, addresses_tuple, min_block, max_block, include_unverified)
|
||||
# )
|
||||
# rows = curs.fetchall()
|
||||
# hashes = [bytes.fromhex(row["hash"]) for row in rows]
|
||||
|
|
@ -683,9 +683,10 @@ class SqueakDb:
|
|||
# with self.get_cursor() as curs:
|
||||
# curs.execute(sql, (squeak_hash_str,))
|
||||
|
||||
def insert_peer(self, squeak_peer: SqueakPeer) -> int:
|
||||
def insert_peer(self, squeak_peer: SqueakPeer) -> bytes:
|
||||
""" Insert a new squeak peer. """
|
||||
ins = self.peers.insert().values(
|
||||
peer_hash=squeak_peer.peer_hash.hex(),
|
||||
peer_name=squeak_peer.peer_name,
|
||||
server_host=squeak_peer.host,
|
||||
server_port=squeak_peer.port,
|
||||
|
|
@ -694,12 +695,14 @@ class SqueakDb:
|
|||
)
|
||||
with self.get_connection() as connection:
|
||||
res = connection.execute(ins)
|
||||
id = res.inserted_primary_key[0]
|
||||
return id
|
||||
peer_hash_str = res.inserted_primary_key[0]
|
||||
return bytes.fromhex(peer_hash_str)
|
||||
|
||||
def get_peer(self, peer_id: int) -> Optional[SqueakPeer]:
|
||||
def get_peer(self, peer_hash: bytes) -> Optional[SqueakPeer]:
|
||||
""" Get a peer. """
|
||||
s = select([self.peers]).where(self.peers.c.peer_id == peer_id)
|
||||
s = select([self.peers]).where(
|
||||
self.peers.c.peer_hash == peer_hash.hex()
|
||||
)
|
||||
with self.get_connection() as connection:
|
||||
result = connection.execute(s)
|
||||
row = result.fetchone()
|
||||
|
|
@ -734,39 +737,40 @@ class SqueakDb:
|
|||
peers = [self._parse_squeak_peer(row) for row in rows]
|
||||
return peers
|
||||
|
||||
def set_peer_downloading(self, peer_id: int, downloading: bool):
|
||||
def set_peer_downloading(self, peer_hash: bytes, downloading: bool):
|
||||
""" Set a peer is downloading. """
|
||||
stmt = (
|
||||
self.peers.update()
|
||||
.where(self.peers.c.peer_id == peer_id)
|
||||
.where(self.peers.c.peer_hash == peer_hash.hex())
|
||||
.values(downloading=downloading)
|
||||
)
|
||||
with self.get_connection() as connection:
|
||||
connection.execute(stmt)
|
||||
|
||||
def set_peer_uploading(self, peer_id: int, uploading: bool):
|
||||
def set_peer_uploading(self, peer_hash: bytes, uploading: bool):
|
||||
""" Set a peer is uploading. """
|
||||
stmt = (
|
||||
self.peers.update()
|
||||
.where(self.peers.c.peer_id == peer_id)
|
||||
.where(self.peers.c.peer_hash == peer_hash.hex())
|
||||
.values(uploading=uploading)
|
||||
)
|
||||
with self.get_connection() as connection:
|
||||
connection.execute(stmt)
|
||||
|
||||
def set_peer_name(self, peer_id: int, peer_name: str):
|
||||
def set_peer_name(self, peer_hash: bytes, peer_name: str):
|
||||
""" Set a peer name. """
|
||||
stmt = (
|
||||
self.peers.update()
|
||||
.where(self.peers.c.peer_id == peer_id)
|
||||
.where(self.peers.c.peer_hash == peer_hash.hex())
|
||||
.values(peer_name=peer_name)
|
||||
)
|
||||
with self.get_connection() as connection:
|
||||
connection.execute(stmt)
|
||||
|
||||
def delete_peer(self, peer_id: int):
|
||||
def delete_peer(self, peer_hash: bytes):
|
||||
""" Delete a peer. """
|
||||
delete_peer_stmt = self.peers.delete().where(self.peers.c.peer_id == peer_id)
|
||||
delete_peer_stmt = self.peers.delete().where(
|
||||
self.peers.c.peer_hash == peer_hash.hex())
|
||||
with self.get_connection() as connection:
|
||||
connection.execute(delete_peer_stmt)
|
||||
|
||||
|
|
@ -784,7 +788,7 @@ class SqueakDb:
|
|||
destination=received_offer.destination,
|
||||
node_host=received_offer.node_host,
|
||||
node_port=received_offer.node_port,
|
||||
peer_id=received_offer.peer_id,
|
||||
peer_hash=received_offer.peer_hash.hex(),
|
||||
)
|
||||
with self.get_connection() as connection:
|
||||
res = connection.execute(ins)
|
||||
|
|
@ -808,7 +812,7 @@ class SqueakDb:
|
|||
.select_from(
|
||||
self.received_offers.outerjoin(
|
||||
self.peers,
|
||||
self.peers.c.peer_id == self.received_offers.c.peer_id,
|
||||
self.peers.c.peer_hash == self.received_offers.c.peer_hash,
|
||||
)
|
||||
)
|
||||
.where(self.received_offers.c.squeak_hash == squeak_hash.hex())
|
||||
|
|
@ -827,7 +831,7 @@ class SqueakDb:
|
|||
.select_from(
|
||||
self.received_offers.outerjoin(
|
||||
self.peers,
|
||||
self.peers.c.peer_id == self.received_offers.c.peer_id,
|
||||
self.peers.c.peer_hash == self.received_offers.c.peer_hash,
|
||||
)
|
||||
)
|
||||
.where(self.received_offers.c.received_offer_id == received_offer_id)
|
||||
|
|
@ -881,7 +885,7 @@ class SqueakDb:
|
|||
def insert_sent_payment(self, sent_payment: SentPayment):
|
||||
""" Insert a new sent payment. """
|
||||
ins = self.sent_payments.insert().values(
|
||||
peer_id=sent_payment.peer_id,
|
||||
peer_hash=sent_payment.peer_hash.hex(),
|
||||
squeak_hash=sent_payment.squeak_hash.hex(),
|
||||
payment_hash=sent_payment.payment_hash.hex(),
|
||||
secret_key=sent_payment.secret_key.hex(),
|
||||
|
|
@ -901,7 +905,7 @@ class SqueakDb:
|
|||
.select_from(
|
||||
self.sent_payments.outerjoin(
|
||||
self.peers,
|
||||
self.peers.c.peer_id == self.sent_payments.c.peer_id,
|
||||
self.peers.c.peer_hash == self.sent_payments.c.peer_hash,
|
||||
)
|
||||
)
|
||||
.order_by(
|
||||
|
|
@ -922,7 +926,7 @@ class SqueakDb:
|
|||
.select_from(
|
||||
self.sent_payments.outerjoin(
|
||||
self.peers,
|
||||
self.peers.c.peer_id == self.sent_payments.c.peer_id,
|
||||
self.peers.c.peer_hash == self.sent_payments.c.peer_hash,
|
||||
)
|
||||
)
|
||||
.where(self.sent_payments.c.sent_payment_id == sent_payment_id)
|
||||
|
|
@ -1128,7 +1132,7 @@ class SqueakDb:
|
|||
|
||||
def _parse_squeak_peer(self, row) -> SqueakPeer:
|
||||
return SqueakPeer(
|
||||
peer_id=row[self.peers.c.peer_id],
|
||||
peer_hash=bytes.fromhex(row[self.peers.c.peer_hash]),
|
||||
peer_name=row["peer_name"],
|
||||
host=row["server_host"],
|
||||
port=row["server_port"],
|
||||
|
|
@ -1150,12 +1154,12 @@ class SqueakDb:
|
|||
destination=row["destination"],
|
||||
node_host=row["node_host"],
|
||||
node_port=row["node_port"],
|
||||
peer_id=row[self.peers.c.peer_id],
|
||||
peer_hash=bytes.fromhex(row[self.received_offers.c.peer_hash]),
|
||||
)
|
||||
|
||||
def _parse_received_offer_with_peer(self, row) -> ReceivedOfferWithPeer:
|
||||
offer = self._parse_received_offer(row)
|
||||
if row[self.peers.c.peer_id] is None:
|
||||
if row[self.peers.c.peer_hash] is None:
|
||||
peer = None
|
||||
else:
|
||||
peer = self._parse_squeak_peer(row)
|
||||
|
|
@ -1168,7 +1172,7 @@ class SqueakDb:
|
|||
return SentPayment(
|
||||
sent_payment_id=row["sent_payment_id"],
|
||||
created=row[self.sent_payments.c.created],
|
||||
peer_id=row[self.sent_payments.c.peer_id],
|
||||
peer_hash=bytes.fromhex(row[self.sent_payments.c.peer_hash]),
|
||||
squeak_hash=bytes.fromhex(row["squeak_hash"]),
|
||||
payment_hash=bytes.fromhex(row["payment_hash"]),
|
||||
secret_key=bytes.fromhex(row["secret_key"]),
|
||||
|
|
@ -1179,7 +1183,7 @@ class SqueakDb:
|
|||
|
||||
def _parse_sent_payment_with_peer(self, row) -> SentPaymentWithPeer:
|
||||
sent_payment = self._parse_sent_payment(row)
|
||||
if row[self.peers.c.peer_id] is None:
|
||||
if row[self.peers.c.peer_hash] is None:
|
||||
peer = None
|
||||
else:
|
||||
peer = self._parse_squeak_peer(row)
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ class PeerConnection:
|
|||
followed_addresses,
|
||||
min_block,
|
||||
max_block,
|
||||
self.peer.peer_id,
|
||||
self.peer.peer_hash,
|
||||
)
|
||||
# Get hashes to get offer
|
||||
hashes_to_get_offer = set(remote_hashes) & set(locked_hashes)
|
||||
|
|
@ -124,7 +124,7 @@ class PeerConnection:
|
|||
def _get_saved_offer(self, squeak_hash: bytes) -> Optional[ReceivedOfferWithPeer]:
|
||||
offers = self.squeak_controller.get_buy_offers_with_peer(squeak_hash)
|
||||
for offer_with_peer in offers:
|
||||
if offer_with_peer.received_offer.peer_id == self.peer.peer_id:
|
||||
if offer_with_peer.received_offer.peer_hash == self.peer.peer_hash:
|
||||
return offer_with_peer
|
||||
return None
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from squeaknode.core.lightning_address import LightningAddressHostPort
|
|||
from squeaknode.core.squeak_controller import SqueakController
|
||||
from squeaknode.core.squeak_core import SqueakCore
|
||||
from squeaknode.core.squeak_peer import SqueakPeer
|
||||
from squeaknode.core.util import get_peer_hash
|
||||
from squeaknode.db.squeak_db import SqueakDb
|
||||
from squeaknode.node.squeak_rate_limiter import SqueakRateLimiter
|
||||
from squeaknode.node.squeak_whitelist import SqueakWhitelist
|
||||
|
|
@ -131,7 +132,7 @@ def test_create_peer(squeak_db, squeak_controller):
|
|||
|
||||
squeak_db.insert_peer.assert_called_with(
|
||||
SqueakPeer(
|
||||
peer_id=None,
|
||||
peer_hash=get_peer_hash("fake_host", 5678),
|
||||
peer_name="fake_peer_name",
|
||||
host="fake_host",
|
||||
port=5678,
|
||||
|
|
@ -150,7 +151,10 @@ def test_create_peer_default_port(config, squeak_db, squeak_controller):
|
|||
|
||||
squeak_db.insert_peer.assert_called_with(
|
||||
SqueakPeer(
|
||||
peer_id=None,
|
||||
peer_hash=get_peer_hash(
|
||||
"fake_host",
|
||||
config.core.default_peer_rpc_port,
|
||||
),
|
||||
peer_name="fake_peer_name",
|
||||
host="fake_host",
|
||||
port=config.core.default_peer_rpc_port,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue